no
no
permalink
yes
hide
hide
show
hide
show
hide
hide
no
yes
no
no
yes
1
380px
fixed
yes

tc-btn-boxed
no
yes
hide
hide
hide
hide
hide
show
hide
hide
{
    "tiddlers": {
        "$:/Acknowledgements": {
            "title": "$:/Acknowledgements",
            "type": "text/vnd.tiddlywiki",
            "text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
        },
        "$:/core/copyright.txt": {
            "title": "$:/core/copyright.txt",
            "type": "text/plain",
            "text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2017, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
        },
        "$:/core/icon": {
            "title": "$:/core/icon",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
        },
        "$:/core/images/advanced-search-button": {
            "title": "$:/core/images/advanced-search-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-advanced-search-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M74.5651535,87.9848361 C66.9581537,93.0488876 57.8237115,96 48,96 C21.490332,96 0,74.509668 0,48 C0,21.490332 21.490332,0 48,0 C74.509668,0 96,21.490332 96,48 C96,57.8541369 93.0305793,67.0147285 87.9377231,74.6357895 L122.284919,108.982985 C125.978897,112.676963 125.973757,118.65366 122.284271,122.343146 C118.593975,126.033442 112.613238,126.032921 108.92411,122.343793 L74.5651535,87.9848361 Z M48,80 C65.673112,80 80,65.673112 80,48 C80,30.326888 65.673112,16 48,16 C30.326888,16 16,30.326888 16,48 C16,65.673112 30.326888,80 48,80 Z\"></path>\n        <circle cx=\"48\" cy=\"48\" r=\"8\"></circle>\n        <circle cx=\"28\" cy=\"48\" r=\"8\"></circle>\n        <circle cx=\"68\" cy=\"48\" r=\"8\"></circle>\n    </g>\n</svg>"
        },
        "$:/core/images/auto-height": {
            "title": "$:/core/images/auto-height",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-auto-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path d=\"M67.9867828,114.356363 L67.9579626,99.8785426 C67.9550688,98.4248183 67.1636987,97.087107 65.8909901,96.3845863 L49.9251455,87.5716209 L47.992126,95.0735397 L79.8995411,95.0735397 C84.1215894,95.0735397 85.4638131,89.3810359 81.686497,87.4948823 L49.7971476,71.5713518 L48.0101917,79.1500092 L79.992126,79.1500092 C84.2093753,79.1500092 85.5558421,73.4676733 81.7869993,71.5753162 L49.805065,55.517008 L48.0101916,63.0917009 L79.9921259,63.0917015 C84.2035118,63.0917016 85.5551434,57.4217887 81.7966702,55.5218807 L65.7625147,47.4166161 L67.9579705,50.9864368 L67.9579705,35.6148245 L77.1715737,44.8284272 C78.7336709,46.3905243 81.2663308,46.3905243 82.8284279,44.8284271 C84.390525,43.2663299 84.390525,40.7336699 82.8284278,39.1715728 L66.8284271,23.1715728 C65.2663299,21.6094757 62.73367,21.6094757 61.1715729,23.1715729 L45.1715729,39.1715729 C43.6094757,40.73367 43.6094757,43.26633 45.1715729,44.8284271 C46.73367,46.3905243 49.26633,46.3905243 50.8284271,44.8284271 L59.9579705,35.6988837 L59.9579705,50.9864368 C59.9579705,52.495201 60.806922,53.8755997 62.1534263,54.5562576 L78.1875818,62.6615223 L79.9921261,55.0917015 L48.0101917,55.0917009 C43.7929424,55.0917008 42.4464755,60.7740368 46.2153183,62.6663939 L78.1972526,78.7247021 L79.992126,71.1500092 L48.0101917,71.1500092 C43.7881433,71.1500092 42.4459197,76.842513 46.2232358,78.7286665 L78.1125852,94.6521971 L79.8995411,87.0735397 L47.992126,87.0735397 C43.8588276,87.0735397 42.4404876,92.5780219 46.0591064,94.5754586 L62.024951,103.388424 L59.9579785,99.8944677 L59.9867142,114.32986 L50.8284271,105.171573 C49.26633,103.609476 46.73367,103.609476 45.1715729,105.171573 C43.6094757,106.73367 43.6094757,109.26633 45.1715729,110.828427 L61.1715729,126.828427 C62.73367,128.390524 65.2663299,128.390524 66.8284271,126.828427 L82.8284278,110.828427 C84.390525,109.26633 84.390525,106.73367 82.8284279,105.171573 C81.2663308,103.609476 78.7336709,103.609476 77.1715737,105.171573 L67.9867828,114.356363 L67.9867828,114.356363 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n</svg>"
        },
        "$:/core/images/blank": {
            "title": "$:/core/images/blank",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\"></svg>"
        },
        "$:/core/images/bold": {
            "title": "$:/core/images/bold",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-bold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M41.1456583,51.8095238 L41.1456583,21.8711485 L67.4985994,21.8711485 C70.0084159,21.8711485 72.4285598,22.0802967 74.7591036,22.4985994 C77.0896475,22.9169022 79.1512515,23.6638602 80.9439776,24.7394958 C82.7367036,25.8151314 84.170863,27.3090474 85.2464986,29.2212885 C86.3221342,31.1335296 86.859944,33.5835518 86.859944,36.5714286 C86.859944,41.9496067 85.2465147,45.8337882 82.0196078,48.2240896 C78.792701,50.614391 74.6694929,51.8095238 69.6498599,51.8095238 L41.1456583,51.8095238 Z M13,0 L13,128 L75.0280112,128 C80.7647346,128 86.3519803,127.28292 91.789916,125.848739 C97.2278517,124.414559 102.068139,122.203563 106.310924,119.215686 C110.553709,116.22781 113.929959,112.373506 116.439776,107.652661 C118.949592,102.931816 120.204482,97.3445701 120.204482,90.8907563 C120.204482,82.8832466 118.262391,76.0411115 114.378151,70.3641457 C110.493911,64.6871798 104.607883,60.7133634 96.719888,58.442577 C102.456611,55.6937304 106.788968,52.1680887 109.717087,47.8655462 C112.645206,43.5630037 114.109244,38.1849062 114.109244,31.7310924 C114.109244,25.7553389 113.123259,20.7357813 111.151261,16.6722689 C109.179262,12.6087565 106.400578,9.35201972 102.815126,6.90196078 C99.2296739,4.45190185 94.927196,2.68908101 89.907563,1.61344538 C84.8879301,0.537809748 79.3305627,0 73.2352941,0 L13,0 Z M41.1456583,106.128852 L41.1456583,70.9915966 L71.8011204,70.9915966 C77.896389,70.9915966 82.7964334,72.3958776 86.5014006,75.2044818 C90.2063677,78.0130859 92.0588235,82.7039821 92.0588235,89.2773109 C92.0588235,92.6237329 91.4911355,95.3725383 90.3557423,97.5238095 C89.2203491,99.6750808 87.6965548,101.378145 85.7843137,102.633053 C83.8720726,103.887961 81.661077,104.784311 79.1512605,105.322129 C76.641444,105.859947 74.0121519,106.128852 71.2633053,106.128852 L41.1456583,106.128852 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/cancel-button": {
            "title": "$:/core/images/cancel-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n\t<g fill-rule=\"evenodd\">\n\t    <path d=\"M64,76.3137085 L47.0294734,93.2842351 C43.9038742,96.4098343 38.8399231,96.4084656 35.7157288,93.2842712 C32.5978915,90.166434 32.5915506,85.0947409 35.7157649,81.9705266 L52.6862915,65 L35.7157649,48.0294734 C32.5901657,44.9038742 32.5915344,39.8399231 35.7157288,36.7157288 C38.833566,33.5978915 43.9052591,33.5915506 47.0294734,36.7157649 L64,53.6862915 L80.9705266,36.7157649 C84.0961258,33.5901657 89.1600769,33.5915344 92.2842712,36.7157288 C95.4021085,39.833566 95.4084494,44.9052591 92.2842351,48.0294734 L75.3137085,65 L92.2842351,81.9705266 C95.4098343,85.0961258 95.4084656,90.1600769 92.2842712,93.2842712 C89.166434,96.4021085 84.0947409,96.4084494 80.9705266,93.2842351 L64,76.3137085 Z M64,129 C99.346224,129 128,100.346224 128,65 C128,29.653776 99.346224,1 64,1 C28.653776,1 1.13686838e-13,29.653776 1.13686838e-13,65 C1.13686838e-13,100.346224 28.653776,129 64,129 Z M64,113 C90.509668,113 112,91.509668 112,65 C112,38.490332 90.509668,17 64,17 C37.490332,17 16,38.490332 16,65 C16,91.509668 37.490332,113 64,113 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/chevron-down": {
            "title": "$:/core/images/chevron-down",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-down tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 40.500000) rotate(-270.000000) translate(-64.000000, -40.500000) translate(-22.500000, -26.500000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
        },
        "$:/core/images/chevron-left": {
            "title": "$:/core/images/chevron-left",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-left tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" version=\"1.1\">\n    <g fill-rule=\"evenodd\" transform=\"translate(92.500000, 64.000000) rotate(-180.000000) translate(-92.500000, -64.000000) translate(6.000000, -3.000000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/chevron-right": {
            "title": "$:/core/images/chevron-right",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-right tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\" transform=\"translate(-48.000000, -3.000000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/chevron-up": {
            "title": "$:/core/images/chevron-up",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-up tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 89.500000) rotate(-90.000000) translate(-64.000000, -89.500000) translate(-22.500000, 22.500000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
        },
        "$:/core/images/clone-button": {
            "title": "$:/core/images/clone-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-clone-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M32.2650915,96 L32.2650915,120.002359 C32.2650915,124.419334 35.8432884,128 40.2627323,128 L120.002359,128 C124.419334,128 128,124.421803 128,120.002359 L128,40.2627323 C128,35.8457573 124.421803,32.2650915 120.002359,32.2650915 L96,32.2650915 L96,48 L108.858899,48 C110.519357,48 111.853018,49.3405131 111.853018,50.9941198 L111.853018,108.858899 C111.853018,110.519357 110.512505,111.853018 108.858899,111.853018 L50.9941198,111.853018 C49.333661,111.853018 48,110.512505 48,108.858899 L48,96 L32.2650915,96 Z\"></path>\n        <path d=\"M40,56 L32.0070969,56 C27.5881712,56 24,52.418278 24,48 C24,43.5907123 27.5848994,40 32.0070969,40 L40,40 L40,32.0070969 C40,27.5881712 43.581722,24 48,24 C52.4092877,24 56,27.5848994 56,32.0070969 L56,40 L63.9929031,40 C68.4118288,40 72,43.581722 72,48 C72,52.4092877 68.4151006,56 63.9929031,56 L56,56 L56,63.9929031 C56,68.4118288 52.418278,72 48,72 C43.5907123,72 40,68.4151006 40,63.9929031 L40,56 Z M7.9992458,0 C3.58138434,0 0,3.5881049 0,7.9992458 L0,88.0007542 C0,92.4186157 3.5881049,96 7.9992458,96 L88.0007542,96 C92.4186157,96 96,92.4118951 96,88.0007542 L96,7.9992458 C96,3.58138434 92.4118951,0 88.0007542,0 L7.9992458,0 Z M19.0010118,16 C17.3435988,16 16,17.336731 16,19.0010118 L16,76.9989882 C16,78.6564012 17.336731,80 19.0010118,80 L76.9989882,80 C78.6564012,80 80,78.663269 80,76.9989882 L80,19.0010118 C80,17.3435988 78.663269,16 76.9989882,16 L19.0010118,16 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/close-all-button": {
            "title": "$:/core/images/close-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-close-all-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\" transform=\"translate(-23.000000, -23.000000)\">\n        <path d=\"M43,131 L22.9976794,131 C18.5827987,131 15,127.418278 15,123 C15,118.590712 18.5806831,115 22.9976794,115 L43,115 L43,94.9976794 C43,90.5827987 46.581722,87 51,87 C55.4092877,87 59,90.5806831 59,94.9976794 L59,115 L79.0023206,115 C83.4172013,115 87,118.581722 87,123 C87,127.409288 83.4193169,131 79.0023206,131 L59,131 L59,151.002321 C59,155.417201 55.418278,159 51,159 C46.5907123,159 43,155.419317 43,151.002321 L43,131 Z\" transform=\"translate(51.000000, 123.000000) rotate(-45.000000) translate(-51.000000, -123.000000) \"></path>\n        <path d=\"M43,59 L22.9976794,59 C18.5827987,59 15,55.418278 15,51 C15,46.5907123 18.5806831,43 22.9976794,43 L43,43 L43,22.9976794 C43,18.5827987 46.581722,15 51,15 C55.4092877,15 59,18.5806831 59,22.9976794 L59,43 L79.0023206,43 C83.4172013,43 87,46.581722 87,51 C87,55.4092877 83.4193169,59 79.0023206,59 L59,59 L59,79.0023206 C59,83.4172013 55.418278,87 51,87 C46.5907123,87 43,83.4193169 43,79.0023206 L43,59 Z\" transform=\"translate(51.000000, 51.000000) rotate(-45.000000) translate(-51.000000, -51.000000) \"></path>\n        <path d=\"M115,59 L94.9976794,59 C90.5827987,59 87,55.418278 87,51 C87,46.5907123 90.5806831,43 94.9976794,43 L115,43 L115,22.9976794 C115,18.5827987 118.581722,15 123,15 C127.409288,15 131,18.5806831 131,22.9976794 L131,43 L151.002321,43 C155.417201,43 159,46.581722 159,51 C159,55.4092877 155.419317,59 151.002321,59 L131,59 L131,79.0023206 C131,83.4172013 127.418278,87 123,87 C118.590712,87 115,83.4193169 115,79.0023206 L115,59 Z\" transform=\"translate(123.000000, 51.000000) rotate(-45.000000) translate(-123.000000, -51.000000) \"></path>\n        <path d=\"M115,131 L94.9976794,131 C90.5827987,131 87,127.418278 87,123 C87,118.590712 90.5806831,115 94.9976794,115 L115,115 L115,94.9976794 C115,90.5827987 118.581722,87 123,87 C127.409288,87 131,90.5806831 131,94.9976794 L131,115 L151.002321,115 C155.417201,115 159,118.581722 159,123 C159,127.409288 155.419317,131 151.002321,131 L131,131 L131,151.002321 C131,155.417201 127.418278,159 123,159 C118.590712,159 115,155.419317 115,151.002321 L115,131 Z\" transform=\"translate(123.000000, 123.000000) rotate(-45.000000) translate(-123.000000, -123.000000) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/close-button": {
            "title": "$:/core/images/close-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z\"></path>\n    </g>\n</svg>\n"
        },
        "$:/core/images/close-others-button": {
            "title": "$:/core/images/close-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-close-others-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z M64,96 C81.673112,96 96,81.673112 96,64 C96,46.326888 81.673112,32 64,32 C46.326888,32 32,46.326888 32,64 C32,81.673112 46.326888,96 64,96 Z M64,80 C72.836556,80 80,72.836556 80,64 C80,55.163444 72.836556,48 64,48 C55.163444,48 48,55.163444 48,64 C48,72.836556 55.163444,80 64,80 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/copy-clipboard": {
            "title": "$:/core/images/copy-clipboard",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-copy-clipboard tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\">\n\t\t<rect x=\"40\" y=\"40\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"82\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"54\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"96\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"68\" width=\"12\" height=\"8\" rx=\"4\"></rect>\n\t\t<path d=\"M40,16 L23.9992458,16 C19.5813843,16 16,19.5907123 16,24 C16,24.0016363 16.0000005,24.0032725 16.0000015,24.0049086 C16.0000005,24.0065441 16,24.0081803 16,24.0098166 L16,119.990183 C16,119.99182 16.0000005,119.993456 16.0000015,119.995092 C16.0000005,119.996727 16,119.998364 16,120 C16,124.409288 19.5813843,128 23.9992458,128 L104.000754,128 C106.205061,128 108.203844,127.105595 109.652065,125.659342 C111.102424,124.21251 112,122.214511 112,120.007595 L112,103.992405 C112,99.5776607 108.418278,96 104,96 C99.5907123,96 96,99.5783218 96,103.992405 L96,112 L32,112 L32,32 L96,32 L96,40.0075946 C96,44.4223393 99.581722,48 104,48 C108.409288,48 112,44.4216782 112,40.0075946 L112,23.9924054 C112,21.7851587 111.104671,19.7871591 109.657101,18.3409203 C108.203844,16.8944047 106.205061,16 104.000754,16 L88,16 C88,11.5907123 84.4151006,8 79.9929031,8 L48.0070969,8 C43.5881712,8 40,11.581722 40,16 Z M44,14.9958262 C44,12.7889923 45.7964248,11 48.0000255,11 L79.9999745,11 C82.2091276,11 84,12.7965212 84,14.9958262 L84,19.0041738 C84,21.2110077 82.2035752,23 79.9999745,23 L48.0000255,23 C45.7908724,23 44,21.2034788 44,19.0041738 L44,14.9958262 Z\"></path>\n\t\t<rect x=\"62\" y=\"64\" width=\"66\" height=\"16\" rx=\"8\"></rect>\n\t\t<path d=\"M60.6568542,85.6568542 L76.6568542,69.6568543 L65.3431458,69.6568542 L81.3431458,85.6568542 C84.4673401,88.7810486 89.5326599,88.7810486 92.6568542,85.6568542 C95.7810486,82.5326599 95.7810486,77.4673401 92.6568542,74.3431458 L76.6568542,58.3431458 C73.5326599,55.2189514 68.4673401,55.2189514 65.3431458,58.3431457 L49.3431458,74.3431457 C46.2189514,77.4673401 46.2189514,82.5326599 49.3431457,85.6568542 C52.4673401,88.7810486 57.5326599,88.7810486 60.6568542,85.6568542 L60.6568542,85.6568542 Z\" transform=\"translate(71.000000, 72.000000) rotate(-90.000000) translate(-71.000000, -72.000000) \"></path>\n\t</g>\n</svg>"
        },
        "$:/core/images/delete-button": {
            "title": "$:/core/images/delete-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\" transform=\"translate(12.000000, 0.000000)\">\n        <rect x=\"0\" y=\"11\" width=\"105\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"28\" y=\"0\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"8\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n        <rect x=\"8\" y=\"112\" width=\"88\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"80\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n        <rect x=\"56\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n        <rect x=\"32\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/done-button": {
            "title": "$:/core/images/done-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M3.52445141,76.8322939 C2.07397484,75.3828178 1.17514421,73.3795385 1.17514421,71.1666288 L1.17514421,23.1836596 C1.17514421,18.7531992 4.75686621,15.1751442 9.17514421,15.1751442 C13.5844319,15.1751442 17.1751442,18.7606787 17.1751442,23.1836596 L17.1751442,63.1751442 L119.173716,63.1751442 C123.590457,63.1751442 127.175144,66.7568662 127.175144,71.1751442 C127.175144,75.5844319 123.592783,79.1751442 119.173716,79.1751442 L9.17657227,79.1751442 C6.96796403,79.1751442 4.9674142,78.279521 3.51911285,76.8315312 Z\" id=\"Rectangle-285\" transform=\"translate(64.175144, 47.175144) rotate(-45.000000) translate(-64.175144, -47.175144) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/down-arrow": {
            "title": "$:/core/images/down-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <path d=\"M109.35638,81.3533152 C107.923899,82.7869182 105.94502,83.6751442 103.759224,83.6751442 L24.5910645,83.6751442 C20.225873,83.6751442 16.6751442,80.1307318 16.6751442,75.7584775 C16.6751442,71.3951199 20.2192225,67.8418109 24.5910645,67.8418109 L95.8418109,67.8418109 L95.8418109,-3.40893546 C95.8418109,-7.77412698 99.3862233,-11.3248558 103.758478,-11.3248558 C108.121835,-11.3248558 111.675144,-7.78077754 111.675144,-3.40893546 L111.675144,75.7592239 C111.675144,77.9416955 110.789142,79.9205745 109.356651,81.3538862 Z\" transform=\"translate(64.175144, 36.175144) rotate(45.000000) translate(-64.175144, -36.175144) \"></path>\n</svg>"
        },
        "$:/core/images/download-button": {
            "title": "$:/core/images/download-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-download-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path class=\"tc-image-download-button-ring\" d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"/><path d=\"M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z\"/></g></svg>"
        },
        "$:/core/images/edit-button": {
            "title": "$:/core/images/edit-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M116.870058,45.3431458 L108.870058,45.3431458 L108.870058,45.3431458 L108.870058,61.3431458 L116.870058,61.3431458 L116.870058,45.3431458 Z M124.870058,45.3431458 L127.649881,45.3431458 C132.066101,45.3431458 135.656854,48.9248678 135.656854,53.3431458 C135.656854,57.7524334 132.07201,61.3431458 127.649881,61.3431458 L124.870058,61.3431458 L124.870058,45.3431458 Z M100.870058,45.3431458 L15.6638275,45.3431458 C15.5064377,45.3431458 15.3501085,45.3476943 15.1949638,45.3566664 L15.1949638,45.3566664 C15.0628002,45.3477039 14.928279,45.3431458 14.7913977,45.3431458 C6.68160973,45.3431458 -8.34314575,53.3431458 -8.34314575,53.3431458 C-8.34314575,53.3431458 6.85614548,61.3431458 14.7913977,61.3431458 C14.9266533,61.3431458 15.0596543,61.3384973 15.190398,61.3293588 C15.3470529,61.3385075 15.5049057,61.3431458 15.6638275,61.3431458 L100.870058,61.3431458 L100.870058,45.3431458 L100.870058,45.3431458 Z\" transform=\"translate(63.656854, 53.343146) rotate(-45.000000) translate(-63.656854, -53.343146) \"></path>\n        <path d=\"M35.1714596,124.189544 C41.9594858,123.613403 49.068777,121.917633 58.85987,118.842282 C60.6854386,118.268877 62.4306907,117.705515 65.1957709,116.802278 C81.1962861,111.575575 87.0734839,109.994907 93.9414474,109.655721 C102.29855,109.242993 107.795169,111.785371 111.520478,118.355045 C112.610163,120.276732 115.051363,120.951203 116.97305,119.861518 C118.894737,118.771832 119.569207,116.330633 118.479522,114.408946 C113.146151,105.003414 104.734907,101.112919 93.5468356,101.66546 C85.6716631,102.054388 79.4899908,103.716944 62.7116783,109.197722 C59.9734132,110.092199 58.2519873,110.64787 56.4625698,111.20992 C37.002649,117.322218 25.6914684,118.282267 16.8654804,112.957098 C14.9739614,111.815848 12.5154166,112.424061 11.3741667,114.31558 C10.2329168,116.207099 10.84113,118.665644 12.7326489,119.806894 C19.0655164,123.627836 26.4866335,124.926678 35.1714596,124.189544 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/erase": {
            "title": "$:/core/images/erase",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-erase tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M60.0870401,127.996166 L123.102318,64.980888 C129.636723,58.4464827 129.629513,47.8655877 123.098967,41.3350425 L99.4657866,17.7018617 C92.927448,11.1635231 82.3486358,11.1698163 75.8199411,17.698511 L4.89768189,88.6207702 C-1.63672343,95.1551755 -1.6295126,105.736071 4.90103262,112.266616 L20.6305829,127.996166 L60.0870401,127.996166 Z M25.1375576,120.682546 L10.812569,106.357558 C7.5455063,103.090495 7.54523836,97.793808 10.8048093,94.5342371 L46.2691086,59.0699377 L81.7308914,94.5317205 L55.5800654,120.682546 L25.1375576,120.682546 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/excise": {
            "title": "$:/core/images/excise",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-excise tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M56,107.313709 L53.6568542,109.656854 C50.5326599,112.781049 45.4673401,112.781049 42.3431457,109.656854 C39.2189514,106.53266 39.2189514,101.46734 42.3431458,98.3431457 L58.3431458,82.3431457 C61.4673401,79.2189514 66.5326599,79.2189514 69.6568542,82.3431458 L85.6568542,98.3431458 C88.7810486,101.46734 88.7810486,106.53266 85.6568542,109.656854 C82.5326599,112.781049 77.4673401,112.781049 74.3431458,109.656854 L72,107.313708 L72,121.597798 C72,125.133636 68.418278,128 64,128 C59.581722,128 56,125.133636 56,121.597798 L56,107.313709 Z M0,40.0070969 C0,35.5848994 3.59071231,32 8,32 C12.418278,32 16,35.5881712 16,40.0070969 L16,71.9929031 C16,76.4151006 12.4092877,80 8,80 C3.581722,80 0,76.4118288 0,71.9929031 L0,40.0070969 Z M32,40.0070969 C32,35.5848994 35.5907123,32 40,32 C44.418278,32 48,35.5881712 48,40.0070969 L48,71.9929031 C48,76.4151006 44.4092877,80 40,80 C35.581722,80 32,76.4118288 32,71.9929031 L32,40.0070969 Z M80,40.0070969 C80,35.5848994 83.5907123,32 88,32 C92.418278,32 96,35.5881712 96,40.0070969 L96,71.9929031 C96,76.4151006 92.4092877,80 88,80 C83.581722,80 80,76.4118288 80,71.9929031 L80,40.0070969 Z M56,8.00709688 C56,3.58489938 59.5907123,0 64,0 C68.418278,0 72,3.58817117 72,8.00709688 L72,39.9929031 C72,44.4151006 68.4092877,48 64,48 C59.581722,48 56,44.4118288 56,39.9929031 L56,8.00709688 Z M112,40.0070969 C112,35.5848994 115.590712,32 120,32 C124.418278,32 128,35.5881712 128,40.0070969 L128,71.9929031 C128,76.4151006 124.409288,80 120,80 C115.581722,80 112,76.4118288 112,71.9929031 L112,40.0070969 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/export-button": {
            "title": "$:/core/images/export-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-export-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00348646,127.999999 C8.00464867,128 8.00581094,128 8.00697327,128 L119.993027,128 C122.205254,128 124.207939,127.101378 125.657096,125.651198 L125.656838,125.65759 C127.104563,124.210109 128,122.21009 128,119.999949 L128,56.0000511 C128,51.5817449 124.409288,48 120,48 C115.581722,48 112,51.5797863 112,56.0000511 L112,112 L16,112 L16,56.0000511 C16,51.5817449 12.4092877,48 8,48 C3.581722,48 7.10542736e-15,51.5797863 7.10542736e-15,56.0000511 L7.10542736e-15,119.999949 C7.10542736e-15,124.418255 3.59071231,128 8,128 C8.00116233,128 8.0023246,128 8.00348681,127.999999 Z M56.6235633,27.3113724 L47.6580188,36.2769169 C44.5333664,39.4015692 39.4634864,39.4061295 36.339292,36.2819351 C33.2214548,33.1640979 33.2173444,28.0901742 36.3443103,24.9632084 L58.9616908,2.34582788 C60.5248533,0.782665335 62.5748436,0.000361191261 64.624516,2.38225238e-14 L64.6193616,0.00151809229 C66.6695374,0.000796251595 68.7211167,0.781508799 70.2854358,2.34582788 L92.9028163,24.9632084 C96.0274686,28.0878607 96.0320289,33.1577408 92.9078345,36.2819351 C89.7899973,39.3997724 84.7160736,39.4038827 81.5891078,36.2769169 L72.6235633,27.3113724 L72.6235633,88.5669606 C72.6235633,92.9781015 69.0418413,96.5662064 64.6235633,96.5662064 C60.2142756,96.5662064 56.6235633,92.984822 56.6235633,88.5669606 L56.6235633,27.3113724 L56.6235633,27.3113724 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/file": {
            "title": "$:/core/images/file",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-file tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"nonzero\">\n        <path d=\"M111.96811,30.5 L112,30.5 L112,119.999079 C112,124.417866 108.419113,128 104.000754,128 L23.9992458,128 C19.5813843,128 16,124.417687 16,119.999079 L16,8.00092105 C16,3.58213437 19.5808867,0 23.9992458,0 L81,0 L81,0.0201838424 C83.1589869,-0.071534047 85.3482153,0.707077645 86.9982489,2.35711116 L109.625176,24.9840387 C111.151676,26.510538 111.932942,28.4998414 111.96811,30.5 L111.96811,30.5 Z M81,8 L24,8 L24,120 L104,120 L104,30.5 L89.0003461,30.5 C84.5818769,30.5 81,26.9216269 81,22.4996539 L81,8 Z\"></path>\n        <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"68\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"84\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"100\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/fixed-height": {
            "title": "$:/core/images/fixed-height",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fixed-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M60,35.6568542 L50.8284271,44.8284271 C49.26633,46.3905243 46.73367,46.3905243 45.1715729,44.8284271 C43.6094757,43.26633 43.6094757,40.73367 45.1715729,39.1715729 L61.1715729,23.1715729 C62.73367,21.6094757 65.2663299,21.6094757 66.8284271,23.1715728 L82.8284278,39.1715728 C84.390525,40.7336699 84.390525,43.2663299 82.8284279,44.8284271 C81.2663308,46.3905243 78.7336709,46.3905243 77.1715737,44.8284272 L68,35.6568539 L68,93.3431461 L77.1715737,84.1715728 C78.7336709,82.6094757 81.2663308,82.6094757 82.8284279,84.1715729 C84.390525,85.7336701 84.390525,88.2663301 82.8284278,89.8284272 L66.8284271,105.828427 C65.2663299,107.390524 62.73367,107.390524 61.1715729,105.828427 L45.1715729,89.8284271 C43.6094757,88.26633 43.6094757,85.73367 45.1715729,84.1715729 C46.73367,82.6094757 49.26633,82.6094757 50.8284271,84.1715729 L60,93.3431458 L60,35.6568542 L60,35.6568542 Z M16,116 L112,116 C114.209139,116 116,114.209139 116,112 C116,109.790861 114.209139,108 112,108 L16,108 C13.790861,108 12,109.790861 12,112 C12,114.209139 13.790861,116 16,116 L16,116 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/fold-all-button": {
            "title": "$:/core/images/fold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M64.0292774,58.6235628 C61.9791013,58.6242848 59.9275217,57.8435723 58.3632024,56.279253 L35.7458219,33.6618725 C32.6211696,30.5372202 32.6166093,25.4673401 35.7408036,22.3431458 C38.8586409,19.2253085 43.9325646,19.2211982 47.0595304,22.348164 L64.0250749,39.3137085 L80.9906194,22.348164 C84.1152717,19.2235117 89.1851518,19.2189514 92.3093461,22.3431458 C95.4271834,25.460983 95.4312937,30.5349067 92.3043279,33.6618725 L69.6869474,56.279253 C68.1237851,57.8424153 66.0737951,58.6247195 64.0241231,58.6250809 Z\" transform=\"translate(64.024316, 39.313708) scale(1, -1) translate(-64.024316, -39.313708) \"></path>\n        <path d=\"M64.0292774,123.621227 C61.9791013,123.621949 59.9275217,122.841236 58.3632024,121.276917 L35.7458219,98.6595365 C32.6211696,95.5348842 32.6166093,90.4650041 35.7408036,87.3408098 C38.8586409,84.2229725 43.9325646,84.2188622 47.0595304,87.345828 L64.0250749,104.311373 L80.9906194,87.345828 C84.1152717,84.2211757 89.1851518,84.2166154 92.3093461,87.3408098 C95.4271834,90.458647 95.4312937,95.5325707 92.3043279,98.6595365 L69.6869474,121.276917 C68.1237851,122.840079 66.0737951,123.622383 64.0241231,123.622745 Z\" transform=\"translate(64.024316, 104.311372) scale(1, -1) translate(-64.024316, -104.311372) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/fold-button": {
            "title": "$:/core/images/fold-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M64.0292774,63.6235628 C61.9791013,63.6242848 59.9275217,62.8435723 58.3632024,61.279253 L35.7458219,38.6618725 C32.6211696,35.5372202 32.6166093,30.4673401 35.7408036,27.3431458 C38.8586409,24.2253085 43.9325646,24.2211982 47.0595304,27.348164 L64.0250749,44.3137085 L80.9906194,27.348164 C84.1152717,24.2235117 89.1851518,24.2189514 92.3093461,27.3431458 C95.4271834,30.460983 95.4312937,35.5349067 92.3043279,38.6618725 L69.6869474,61.279253 C68.1237851,62.8424153 66.0737951,63.6247195 64.0241231,63.6250809 Z\" transform=\"translate(64.024316, 44.313708) scale(1, -1) translate(-64.024316, -44.313708) \"></path>\n        <path d=\"M64.0049614,105.998482 C61.9547853,105.999204 59.9032057,105.218491 58.3388864,103.654172 L35.7215059,81.0367916 C32.5968535,77.9121393 32.5922933,72.8422592 35.7164876,69.7180649 C38.8343248,66.6002276 43.9082485,66.5961173 47.0352144,69.7230831 L64.0007589,86.6886276 L80.9663034,69.7230831 C84.0909557,66.5984308 89.1608358,66.5938705 92.2850301,69.7180649 C95.4028673,72.8359021 95.4069777,77.9098258 92.2800119,81.0367916 L69.6626314,103.654172 C68.099469,105.217334 66.0494791,105.999639 63.999807,106 Z\" transform=\"translate(64.000000, 86.688628) scale(1, -1) translate(-64.000000, -86.688628) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/fold-others-button": {
            "title": "$:/core/images/fold-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fold-others tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"56.0314331\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M101.657101,104.948818 C100.207918,103.498614 98.2051847,102.599976 95.9929031,102.599976 L72,102.599976 L72,78.6070725 C72,76.3964271 71.1036108,74.3936927 69.6545293,72.9441002 L69.6571005,72.9488183 C68.2079177,71.4986143 66.2051847,70.5999756 63.9929031,70.5999756 L32.0070969,70.5999756 C27.5881712,70.5999756 24,74.1816976 24,78.5999756 C24,83.0092633 27.5848994,86.5999756 32.0070969,86.5999756 L56,86.5999756 L56,110.592879 C56,112.803524 56.8963895,114.806259 58.3454713,116.255852 L58.3429,116.251133 C59.7920828,117.701337 61.7948156,118.599976 64.0070969,118.599976 L88,118.599976 L88,142.592879 C88,147.011804 91.581722,150.599976 96,150.599976 C100.409288,150.599976 104,147.015076 104,142.592879 L104,110.607072 C104,108.396427 103.103611,106.393693 101.654529,104.9441 Z\" transform=\"translate(64.000000, 110.599976) rotate(-45.000000) translate(-64.000000, -110.599976) \"></path>\n        <path d=\"M101.725643,11.7488671 C100.27646,10.2986632 98.2737272,9.40002441 96.0614456,9.40002441 L72.0685425,9.40002441 L72.0685425,-14.5928787 C72.0685425,-16.8035241 71.1721533,-18.8062584 69.7230718,-20.255851 L69.725643,-20.2511329 C68.2764602,-21.7013368 66.2737272,-22.5999756 64.0614456,-22.5999756 L32.0756394,-22.5999756 C27.6567137,-22.5999756 24.0685425,-19.0182536 24.0685425,-14.5999756 C24.0685425,-10.1906879 27.6534419,-6.59997559 32.0756394,-6.59997559 L56.0685425,-6.59997559 L56.0685425,17.3929275 C56.0685425,19.6035732 56.964932,21.6063078 58.4140138,23.0559004 L58.4114425,23.0511823 C59.8606253,24.5013859 61.8633581,25.4000244 64.0756394,25.4000244 L88.0685425,25.4000244 L88.0685425,49.3929275 C88.0685425,53.8118532 91.6502645,57.4000244 96.0685425,57.4000244 C100.47783,57.4000244 104.068542,53.815125 104.068542,49.3929275 L104.068542,17.4071213 C104.068542,15.1964759 103.172153,13.1937416 101.723072,11.744149 Z\" transform=\"translate(64.068542, 17.400024) scale(1, -1) rotate(-45.000000) translate(-64.068542, -17.400024) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/folder": {
            "title": "$:/core/images/folder",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-folder tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M55.6943257,128.000004 L7.99859666,128.000004 C3.5810937,128.000004 0,124.413822 0,119.996384 L0,48.0036243 C0,43.5833471 3.58387508,40.0000044 7.99859666,40.0000044 L16,40.0000044 L16,31.9999914 C16,27.5817181 19.5783731,24 24.0003461,24 L55.9996539,24 C60.4181231,24 64,27.5800761 64,31.9999914 L64,40.0000044 L104.001403,40.0000044 C108.418906,40.0000044 112,43.5861868 112,48.0036243 L112,59.8298353 L104,59.7475921 L104,51.9994189 C104,49.7887607 102.207895,48.0000044 99.9972215,48.0000044 L56,48.0000044 L56,36.0000255 C56,33.7898932 54.2072328,32 51.9957423,32 L28.0042577,32 C25.7890275,32 24,33.7908724 24,36.0000255 L24,48.0000044 L12.0027785,48.0000044 C9.78987688,48.0000044 8,49.7906032 8,51.9994189 L8,116.00059 C8,118.211248 9.79210499,120.000004 12.0027785,120.000004 L58.7630167,120.000004 L55.6943257,128.000004 L55.6943257,128.000004 Z\"></path>\n        <path d=\"M23.8728955,55.5 L119.875702,55.5 C124.293205,55.5 126.87957,59.5532655 125.650111,64.5630007 L112.305967,118.936999 C111.077582,123.942356 106.497904,128 102.083183,128 L6.08037597,128 C1.66287302,128 -0.923492342,123.946735 0.305967145,118.936999 L13.650111,64.5630007 C14.878496,59.5576436 19.4581739,55.5 23.8728955,55.5 L23.8728955,55.5 L23.8728955,55.5 Z M25.6530124,64 L113.647455,64 C115.858129,64 117.151473,66.0930612 116.538306,68.6662267 L105.417772,115.333773 C104.803671,117.910859 102.515967,120 100.303066,120 L12.3086228,120 C10.0979492,120 8.8046054,117.906939 9.41777189,115.333773 L20.5383062,68.6662267 C21.1524069,66.0891409 23.4401107,64 25.6530124,64 L25.6530124,64 L25.6530124,64 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/full-screen-button": {
            "title": "$:/core/images/full-screen-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-full-screen-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g>\n        <g>\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n        <g transform=\"translate(104.000000, 104.000000) rotate(-180.000000) translate(-104.000000, -104.000000) translate(80.000000, 80.000000)\">\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n        <g transform=\"translate(24.000000, 104.000000) rotate(-90.000000) translate(-24.000000, -104.000000) translate(0.000000, 80.000000)\">\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n        <g transform=\"translate(104.000000, 24.000000) rotate(90.000000) translate(-104.000000, -24.000000) translate(80.000000, 0.000000)\">\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n    </g>\n</svg>"
        },
        "$:/core/images/github": {
            "title": "$:/core/images/github",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-github tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n        <g fill-rule=\"evenodd\">\n            <path d=\"M63.9383506,1.60695328 C28.6017227,1.60695328 -0.055756057,30.2970814 -0.055756057,65.6906208 C-0.055756057,94.003092 18.2804728,118.019715 43.7123154,126.493393 C46.9143781,127.083482 48.0812647,125.104717 48.0812647,123.405261 C48.0812647,121.886765 48.02626,117.85449 47.9948287,112.508284 C30.1929317,116.379268 26.4368926,103.916587 26.4368926,103.916587 C23.5255693,96.5129372 19.3294921,94.5420399 19.3294921,94.5420399 C13.5186324,90.5687739 19.7695302,90.6474524 19.7695302,90.6474524 C26.1933001,91.099854 29.5721638,97.2525155 29.5721638,97.2525155 C35.2808718,107.044059 44.5531024,104.215566 48.1991321,102.575118 C48.7806109,98.4366275 50.4346826,95.612068 52.2616263,94.0109598 C38.0507543,92.3941159 23.1091047,86.8944862 23.1091047,62.3389152 C23.1091047,55.3443933 25.6039634,49.6205298 29.6978889,45.1437211 C29.0378318,43.5229433 26.8415704,37.0044266 30.3265147,28.1845627 C30.3265147,28.1845627 35.6973364,26.4615028 47.9241083,34.7542205 C53.027764,33.330139 58.5046663,32.6220321 63.9462084,32.5944947 C69.3838216,32.6220321 74.856795,33.330139 79.9683085,34.7542205 C92.1872225,26.4615028 97.5501864,28.1845627 97.5501864,28.1845627 C101.042989,37.0044266 98.8467271,43.5229433 98.190599,45.1437211 C102.292382,49.6205298 104.767596,55.3443933 104.767596,62.3389152 C104.767596,86.9574291 89.8023734,92.3744463 75.5482834,93.9598188 C77.8427675,95.9385839 79.8897303,99.8489072 79.8897303,105.828476 C79.8897303,114.392635 79.8111521,121.304544 79.8111521,123.405261 C79.8111521,125.120453 80.966252,127.114954 84.2115327,126.489459 C109.623731,117.996111 127.944244,93.9952241 127.944244,65.6906208 C127.944244,30.2970814 99.2867652,1.60695328 63.9383506,1.60695328\"></path>\n        </g>\n    </svg>\n"
        },
        "$:/core/images/globe": {
            "title": "$:/core/images/globe",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-globe tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M72.8111354,37.1275855 C72.8111354,37.9789875 72.8111354,38.8303894 72.8111354,39.6817913 C72.8111354,41.8784743 73.7885604,46.5631866 72.8111354,48.5143758 C71.3445471,51.4420595 68.1617327,52.0543531 66.4170946,54.3812641 C65.2352215,55.9575873 61.7987417,64.9821523 62.7262858,67.3005778 C66.6959269,77.2228204 74.26087,70.4881886 80.6887657,76.594328 C81.5527211,77.415037 83.5758191,78.8666631 83.985137,79.8899578 C87.2742852,88.1128283 76.4086873,94.8989524 87.7419325,106.189751 C88.9872885,107.430443 91.555495,102.372895 91.8205061,101.575869 C92.6726866,99.0129203 98.5458765,96.1267309 100.908882,94.5234439 C102.928056,93.1534443 105.782168,91.8557166 107.236936,89.7775886 C109.507391,86.5342557 108.717505,82.2640435 110.334606,79.0328716 C112.473794,74.7585014 114.163418,69.3979002 116.332726,65.0674086 C120.230862,57.2857361 121.054075,67.1596684 121.400359,67.5059523 C121.757734,67.8633269 122.411167,67.5059523 122.916571,67.5059523 C123.011132,67.5059523 124.364019,67.6048489 124.432783,67.5059523 C125.0832,66.5705216 123.390209,49.5852316 123.114531,48.2089091 C121.710578,41.1996597 116.17083,32.4278331 111.249523,27.7092761 C104.975994,21.6942076 104.160516,11.5121686 92.9912146,12.7547535 C92.7872931,12.7774397 87.906794,22.9027026 85.2136766,26.2672064 C81.486311,30.9237934 82.7434931,22.1144904 78.6876623,22.1144904 C78.6065806,22.1144904 77.5045497,22.0107615 77.4353971,22.1144904 C76.8488637,22.9942905 75.9952305,26.0101404 75.1288269,26.5311533 C74.8635477,26.6906793 73.4071369,26.2924966 73.2826811,26.5311533 C71.0401728,30.8313939 81.5394677,28.7427264 79.075427,34.482926 C76.7225098,39.9642538 72.747373,32.4860199 72.747373,43.0434079\"></path>\n        <path d=\"M44.4668556,7.01044608 C54.151517,13.1403033 45.1489715,19.2084878 47.1611905,23.2253896 C48.8157833,26.5283781 51.4021933,28.6198851 48.8753629,33.038878 C46.8123257,36.6467763 42.0052989,37.0050492 39.251679,39.7621111 C36.2115749,42.8060154 33.7884281,48.7028116 32.4624592,52.6732691 C30.8452419,57.5158356 47.0088721,59.5388126 44.5246867,63.6811917 C43.1386839,65.9923513 37.7785192,65.1466282 36.0880227,63.8791519 C34.9234453,63.0059918 32.4946425,63.3331166 31.6713597,62.0997342 C29.0575851,58.1839669 29.4107339,54.0758543 28.0457962,49.9707786 C27.1076833,47.1493864 21.732611,47.8501656 20.2022714,49.3776393 C19.6790362,49.8998948 19.8723378,51.1703278 19.8723378,51.8829111 C19.8723378,57.1682405 26.9914913,55.1986414 26.9914913,58.3421973 C26.9914913,72.9792302 30.9191897,64.8771867 38.1313873,69.6793121 C48.1678018,76.3618966 45.9763926,76.981595 53.0777543,84.0829567 C56.7511941,87.7563965 60.8192437,87.7689005 62.503478,93.3767069 C64.1046972,98.7081071 53.1759798,98.7157031 50.786754,100.825053 C49.663965,101.816317 47.9736094,104.970571 46.5680513,105.439676 C44.7757187,106.037867 43.334221,105.93607 41.6242359,107.219093 C39.1967302,109.040481 37.7241465,112.151588 37.6034934,112.030935 C35.4555278,109.88297 34.0848666,96.5511248 33.7147244,93.7726273 C33.1258872,89.3524817 28.1241923,88.2337027 26.7275443,84.7420826 C25.1572737,80.8164061 28.2518481,75.223612 25.599097,70.9819941 C19.0797019,60.557804 13.7775712,56.4811506 10.2493953,44.6896152 C9.3074899,41.5416683 13.5912267,38.1609942 15.1264825,35.8570308 C17.0029359,33.0410312 17.7876232,30.0028946 19.8723378,27.2224065 C22.146793,24.1888519 40.8551166,9.46076832 43.8574051,8.63490613 L44.4668556,7.01044608 Z\"></path>\n        <path d=\"M64,126 C98.2416545,126 126,98.2416545 126,64 C126,29.7583455 98.2416545,2 64,2 C29.7583455,2 2,29.7583455 2,64 C2,98.2416545 29.7583455,126 64,126 Z M64,120 C94.927946,120 120,94.927946 120,64 C120,33.072054 94.927946,8 64,8 C33.072054,8 8,33.072054 8,64 C8,94.927946 33.072054,120 64,120 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-1": {
            "title": "$:/core/images/heading-1",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-1 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M14,30 L27.25,30 L27.25,60.104 L61.7,60.104 L61.7,30 L74.95,30 L74.95,105.684 L61.7,105.684 L61.7,71.552 L27.25,71.552 L27.25,105.684 L14,105.684 L14,30 Z M84.3350766,43.78 C86.8790893,43.78 89.3523979,43.5680021 91.7550766,43.144 C94.1577553,42.7199979 96.3307336,42.0133383 98.2740766,41.024 C100.21742,40.0346617 101.87807,38.7626744 103.256077,37.208 C104.634084,35.6533256 105.535075,33.7453446 105.959077,31.484 L115.817077,31.484 L115.817077,105.684 L102.567077,105.684 L102.567077,53.32 L84.3350766,53.32 L84.3350766,43.78 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-2": {
            "title": "$:/core/images/heading-2",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-2 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M125.519077,105.684 L74.8510766,105.684 C74.9217436,99.5359693 76.4057288,94.1653563 79.3030766,89.572 C82.2004244,84.9786437 86.1577182,80.986017 91.1750766,77.594 C93.5777553,75.8273245 96.0863969,74.113675 98.7010766,72.453 C101.315756,70.792325 103.718399,69.0080095 105.909077,67.1 C108.099754,65.1919905 109.901736,63.1250111 111.315077,60.899 C112.728417,58.6729889 113.47041,56.1113478 113.541077,53.214 C113.541077,51.8713266 113.382078,50.4403409 113.064077,48.921 C112.746075,47.4016591 112.127748,45.9883399 111.209077,44.681 C110.290405,43.3736601 109.018418,42.2783377 107.393077,41.395 C105.767735,40.5116622 103.647756,40.07 101.033077,40.07 C98.6303979,40.07 96.6340846,40.5469952 95.0440766,41.501 C93.4540687,42.4550048 92.1820814,43.762325 91.2280766,45.423 C90.2740719,47.083675 89.5674123,49.0446554 89.1080766,51.306 C88.648741,53.5673446 88.3837436,56.0053203 88.3130766,58.62 L76.2290766,58.62 C76.2290766,54.5213128 76.7767378,50.7230175 77.8720766,47.225 C78.9674154,43.7269825 80.610399,40.7060127 82.8010766,38.162 C84.9917542,35.6179873 87.6593942,33.6216739 90.8040766,32.173 C93.948759,30.7243261 97.6057224,30 101.775077,30 C106.297766,30 110.078395,30.7419926 113.117077,32.226 C116.155758,33.7100074 118.611401,35.5826554 120.484077,37.844 C122.356753,40.1053446 123.681739,42.5609868 124.459077,45.211 C125.236414,47.8610133 125.625077,50.3873213 125.625077,52.79 C125.625077,55.7580148 125.165748,58.4433213 124.247077,60.846 C123.328405,63.2486787 122.091751,65.4569899 120.537077,67.471 C118.982402,69.4850101 117.215753,71.3399915 115.237077,73.036 C113.2584,74.7320085 111.209087,76.3219926 109.089077,77.806 C106.969066,79.2900074 104.849087,80.7033266 102.729077,82.046 C100.609066,83.3886734 98.6480856,84.7313266 96.8460766,86.074 C95.0440676,87.4166734 93.47175,88.8123261 92.1290766,90.261 C90.7864032,91.7096739 89.8677458,93.2466585 89.3730766,94.872 L125.519077,94.872 L125.519077,105.684 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-3": {
            "title": "$:/core/images/heading-3",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-3 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M94.8850766,62.224 C96.8637532,62.294667 98.8424001,62.1533351 100.821077,61.8 C102.799753,61.4466649 104.566402,60.8283378 106.121077,59.945 C107.675751,59.0616623 108.930072,57.8426744 109.884077,56.288 C110.838081,54.7333256 111.315077,52.8253446 111.315077,50.564 C111.315077,47.3839841 110.237421,44.8400095 108.082077,42.932 C105.926733,41.0239905 103.153094,40.07 99.7610766,40.07 C97.641066,40.07 95.8037511,40.4939958 94.2490766,41.342 C92.6944022,42.1900042 91.4047484,43.3383261 90.3800766,44.787 C89.3554048,46.2356739 88.5957458,47.860991 88.1010766,49.663 C87.6064075,51.465009 87.3944096,53.3199905 87.4650766,55.228 L75.3810766,55.228 C75.5224107,51.623982 76.1937373,48.2850154 77.3950766,45.211 C78.596416,42.1369846 80.2393995,39.4693446 82.3240766,37.208 C84.4087537,34.9466554 86.9350618,33.1800064 89.9030766,31.908 C92.8710915,30.6359936 96.2277246,30 99.9730766,30 C102.870424,30 105.714729,30.4239958 108.506077,31.272 C111.297424,32.1200042 113.806065,33.3566585 116.032077,34.982 C118.258088,36.6073415 120.042403,38.6743208 121.385077,41.183 C122.72775,43.6916792 123.399077,46.5713171 123.399077,49.822 C123.399077,53.5673521 122.551085,56.8356527 120.855077,59.627 C119.159068,62.4183473 116.509095,64.4499936 112.905077,65.722 L112.905077,65.934 C117.145098,66.7820042 120.448731,68.8843166 122.816077,72.241 C125.183422,75.5976835 126.367077,79.6786426 126.367077,84.484 C126.367077,88.017351 125.660417,91.1796527 124.247077,93.971 C122.833736,96.7623473 120.925755,99.129657 118.523077,101.073 C116.120398,103.016343 113.329093,104.517995 110.149077,105.578 C106.969061,106.638005 103.612428,107.168 100.079077,107.168 C95.7683884,107.168 92.005426,106.549673 88.7900766,105.313 C85.5747272,104.076327 82.8894207,102.327345 80.7340766,100.066 C78.5787325,97.8046554 76.9357489,95.0840159 75.8050766,91.904 C74.6744043,88.7239841 74.0737436,85.1906861 74.0030766,81.304 L86.0870766,81.304 C85.9457426,85.8266893 87.0587315,89.5896517 89.4260766,92.593 C91.7934218,95.5963483 95.3443863,97.098 100.079077,97.098 C104.107097,97.098 107.481396,95.9496782 110.202077,93.653 C112.922757,91.3563219 114.283077,88.0880212 114.283077,83.848 C114.283077,80.9506522 113.717749,78.6540085 112.587077,76.958 C111.456404,75.2619915 109.972419,73.9723378 108.135077,73.089 C106.297734,72.2056623 104.230755,71.6580011 101.934077,71.446 C99.6373985,71.2339989 97.2877553,71.163333 94.8850766,71.234 L94.8850766,62.224 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-4": {
            "title": "$:/core/images/heading-4",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-4 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8,30 L21.25,30 L21.25,60.104 L55.7,60.104 L55.7,30 L68.95,30 L68.95,105.684 L55.7,105.684 L55.7,71.552 L21.25,71.552 L21.25,105.684 L8,105.684 L8,30 Z M84.5890766,78.548 L107.061077,78.548 L107.061077,45.9 L106.849077,45.9 L84.5890766,78.548 Z M128.049077,88.088 L118.509077,88.088 L118.509077,105.684 L107.061077,105.684 L107.061077,88.088 L75.2610766,88.088 L75.2610766,76.11 L107.061077,31.484 L118.509077,31.484 L118.509077,78.548 L128.049077,78.548 L128.049077,88.088 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-5": {
            "title": "$:/core/images/heading-5",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-5 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M83.7550766,31.484 L122.127077,31.484 L122.127077,42.296 L92.7650766,42.296 L88.9490766,61.164 L89.1610766,61.376 C90.7864181,59.5386575 92.8533974,58.1430048 95.3620766,57.189 C97.8707558,56.2349952 100.361731,55.758 102.835077,55.758 C106.509762,55.758 109.795729,56.3763272 112.693077,57.613 C115.590424,58.8496729 118.0284,60.5809889 120.007077,62.807 C121.985753,65.0330111 123.487405,67.6653181 124.512077,70.704 C125.536748,73.7426819 126.049077,77.028649 126.049077,80.562 C126.049077,83.5300148 125.572081,86.5863176 124.618077,89.731 C123.664072,92.8756824 122.144754,95.7376538 120.060077,98.317 C117.9754,100.896346 115.30776,103.016325 112.057077,104.677 C108.806394,106.337675 104.919766,107.168 100.397077,107.168 C96.7930586,107.168 93.454092,106.691005 90.3800766,105.737 C87.3060613,104.782995 84.6030883,103.35201 82.2710766,101.444 C79.939065,99.5359905 78.0840835,97.1863473 76.7060766,94.395 C75.3280697,91.6036527 74.5684107,88.3353521 74.4270766,84.59 L86.5110766,84.59 C86.8644117,88.6180201 88.2423979,91.7096559 90.6450766,93.865 C93.0477553,96.0203441 96.2277235,97.098 100.185077,97.098 C102.729089,97.098 104.884401,96.6740042 106.651077,95.826 C108.417752,94.9779958 109.848738,93.8120074 110.944077,92.328 C112.039415,90.8439926 112.816741,89.1126766 113.276077,87.134 C113.735412,85.1553234 113.965077,83.0353446 113.965077,80.774 C113.965077,78.7246564 113.682413,76.763676 113.117077,74.891 C112.55174,73.018324 111.703749,71.3753404 110.573077,69.962 C109.442404,68.5486596 107.976086,67.4180042 106.174077,66.57 C104.372068,65.7219958 102.269755,65.298 99.8670766,65.298 C97.3230639,65.298 94.9380878,65.7749952 92.7120766,66.729 C90.4860655,67.6830048 88.8784149,69.4673203 87.8890766,72.082 L75.8050766,72.082 L83.7550766,31.484 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-6": {
            "title": "$:/core/images/heading-6",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-6 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M112.587077,50.246 C112.304409,47.2073181 111.226753,44.751676 109.354077,42.879 C107.481401,41.006324 104.955093,40.07 101.775077,40.07 C99.584399,40.07 97.6940846,40.4763293 96.1040766,41.289 C94.5140687,42.1016707 93.1714154,43.1793266 92.0760766,44.522 C90.9807378,45.8646734 90.0974133,47.401658 89.4260766,49.133 C88.7547399,50.864342 88.2070787,52.6839905 87.7830766,54.592 C87.3590745,56.5000095 87.0587442,58.390324 86.8820766,60.263 C86.7054091,62.135676 86.5464107,63.8846585 86.4050766,65.51 L86.6170766,65.722 C88.2424181,62.7539852 90.4860623,60.5456739 93.3480766,59.097 C96.2100909,57.6483261 99.3017267,56.924 102.623077,56.924 C106.297762,56.924 109.583729,57.5599936 112.481077,58.832 C115.378424,60.1040064 117.834067,61.8529889 119.848077,64.079 C121.862087,66.3050111 123.399071,68.9373181 124.459077,71.976 C125.519082,75.0146819 126.049077,78.300649 126.049077,81.834 C126.049077,85.438018 125.466082,88.7769846 124.300077,91.851 C123.134071,94.9250154 121.455754,97.6103219 119.265077,99.907 C117.074399,102.203678 114.459758,103.987994 111.421077,105.26 C108.382395,106.532006 105.025762,107.168 101.351077,107.168 C95.9097161,107.168 91.4400941,106.16101 87.9420766,104.147 C84.4440591,102.13299 81.6880867,99.3770175 79.6740766,95.879 C77.6600666,92.3809825 76.2644138,88.2823568 75.4870766,83.583 C74.7097394,78.8836432 74.3210766,73.8133605 74.3210766,68.372 C74.3210766,63.9199777 74.7980719,59.4326893 75.7520766,54.91 C76.7060814,50.3873107 78.278399,46.2710186 80.4690766,42.561 C82.6597542,38.8509815 85.5393921,35.8300117 89.1080766,33.498 C92.6767611,31.1659883 97.0757171,30 102.305077,30 C105.273091,30 108.064397,30.4946617 110.679077,31.484 C113.293756,32.4733383 115.608067,33.8513245 117.622077,35.618 C119.636087,37.3846755 121.27907,39.5046543 122.551077,41.978 C123.823083,44.4513457 124.529743,47.2073181 124.671077,50.246 L112.587077,50.246 Z M100.927077,97.098 C103.117754,97.098 105.025735,96.6563378 106.651077,95.773 C108.276418,94.8896623 109.636738,93.7413404 110.732077,92.328 C111.827415,90.9146596 112.640074,89.271676 113.170077,87.399 C113.700079,85.526324 113.965077,83.6006766 113.965077,81.622 C113.965077,79.6433234 113.700079,77.7353425 113.170077,75.898 C112.640074,74.0606575 111.827415,72.4530069 110.732077,71.075 C109.636738,69.6969931 108.276418,68.5840042 106.651077,67.736 C105.025735,66.8879958 103.117754,66.464 100.927077,66.464 C98.736399,66.464 96.8107516,66.8703293 95.1500766,67.683 C93.4894017,68.4956707 92.0937489,69.5909931 90.9630766,70.969 C89.8324043,72.3470069 88.9844128,73.9546575 88.4190766,75.792 C87.8537405,77.6293425 87.5710766,79.5726564 87.5710766,81.622 C87.5710766,83.6713436 87.8537405,85.6146575 88.4190766,87.452 C88.9844128,89.2893425 89.8324043,90.9323261 90.9630766,92.381 C92.0937489,93.8296739 93.4894017,94.9779958 95.1500766,95.826 C96.8107516,96.6740042 98.736399,97.098 100.927077,97.098 L100.927077,97.098 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/help": {
            "title": "$:/core/images/help",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-help tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M36.0548906,111.44117 C30.8157418,115.837088 20.8865444,118.803477 9.5,118.803477 C7.86465619,118.803477 6.25937294,118.742289 4.69372699,118.624467 C12.612543,115.984876 18.7559465,110.02454 21.0611049,102.609942 C8.74739781,92.845129 1.04940554,78.9359851 1.04940554,63.5 C1.04940554,33.9527659 29.2554663,10 64.0494055,10 C98.8433448,10 127.049406,33.9527659 127.049406,63.5 C127.049406,93.0472341 98.8433448,117 64.0494055,117 C53.9936953,117 44.48824,114.999337 36.0548906,111.44117 L36.0548906,111.44117 Z M71.4042554,77.5980086 C71.406883,77.2865764 71.4095079,76.9382011 71.4119569,76.5610548 C71.4199751,75.3262169 71.4242825,74.0811293 71.422912,72.9158546 C71.4215244,71.736154 71.4143321,70.709635 71.4001396,69.8743525 C71.4078362,68.5173028 71.9951951,67.7870427 75.1273009,65.6385471 C75.2388969,65.5619968 76.2124091,64.8981068 76.5126553,64.6910879 C79.6062455,62.5580654 81.5345849,60.9050204 83.2750652,58.5038955 C85.6146327,55.2762841 86.8327108,51.426982 86.8327108,46.8554323 C86.8327108,33.5625756 76.972994,24.9029551 65.3778484,24.9029551 C54.2752771,24.9029551 42.8794554,34.5115163 41.3121702,47.1975534 C40.9043016,50.4989536 43.2499725,53.50591 46.5513726,53.9137786 C49.8527728,54.3216471 52.8597292,51.9759763 53.2675978,48.6745761 C54.0739246,42.1479456 60.2395837,36.9492759 65.3778484,36.9492759 C70.6427674,36.9492759 74.78639,40.5885487 74.78639,46.8554323 C74.78639,50.4892974 73.6853224,52.008304 69.6746221,54.7736715 C69.4052605,54.9593956 68.448509,55.6118556 68.3131127,55.7047319 C65.6309785,57.5445655 64.0858213,58.803255 62.6123358,60.6352315 C60.5044618,63.2559399 59.3714208,66.3518252 59.3547527,69.9487679 C59.3684999,70.8407274 59.3752803,71.8084521 59.3765995,72.9300232 C59.3779294,74.0607297 59.3737237,75.2764258 59.36589,76.482835 C59.3634936,76.8518793 59.3609272,77.1924914 59.3583633,77.4963784 C59.3568319,77.6778944 59.3556368,77.8074256 59.3549845,77.8730928 C59.3219814,81.1994287 61.9917551,83.9227111 65.318091,83.9557142 C68.644427,83.9887173 71.3677093,81.3189435 71.4007124,77.9926076 C71.4014444,77.9187458 71.402672,77.7856841 71.4042554,77.5980086 Z M65.3778489,102.097045 C69.5359735,102.097045 72.9067994,98.7262189 72.9067994,94.5680944 C72.9067994,90.4099698 69.5359735,87.0391439 65.3778489,87.0391439 C61.2197243,87.0391439 57.8488984,90.4099698 57.8488984,94.5680944 C57.8488984,98.7262189 61.2197243,102.097045 65.3778489,102.097045 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/home-button": {
            "title": "$:/core/images/home-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M112.9847,119.501583 C112.99485,119.336814 113,119.170705 113,119.003406 L113,67.56802 C116.137461,70.5156358 121.076014,70.4518569 124.133985,67.3938855 C127.25818,64.2696912 127.260618,59.2068102 124.131541,56.0777326 L70.3963143,2.34250601 C68.8331348,0.779326498 66.7828947,-0.000743167069 64.7337457,1.61675364e-05 C62.691312,-0.00409949529 60.6426632,0.777559815 59.077717,2.34250601 L33,28.420223 L33,28.420223 L33,8.00697327 C33,3.58484404 29.4092877,0 25,0 C20.581722,0 17,3.59075293 17,8.00697327 L17,44.420223 L5.3424904,56.0777326 C2.21694607,59.2032769 2.22220878,64.2760483 5.34004601,67.3938855 C8.46424034,70.5180798 13.5271213,70.5205187 16.6561989,67.3914411 L17,67.04764 L17,119.993027 C17,119.994189 17.0000002,119.995351 17.0000007,119.996514 C17.0000002,119.997675 17,119.998838 17,120 C17,124.418278 20.5881049,128 24.9992458,128 L105.000754,128 C109.418616,128 113,124.409288 113,120 C113,119.832611 112.99485,119.666422 112.9847,119.501583 Z M97,112 L97,51.5736087 L97,51.5736087 L64.7370156,19.3106244 L33,51.04764 L33,112 L97,112 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/import-button": {
            "title": "$:/core/images/import-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-import-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M105.449437,94.2138951 C105.449437,94.2138951 110.049457,94.1897106 110.049457,99.4026111 C110.049457,104.615512 105.163246,104.615511 105.163246,104.615511 L45.0075072,105.157833 C45.0075072,105.157833 0.367531803,106.289842 0.367532368,66.6449212 C0.367532934,27.0000003 45.0428249,27.0000003 45.0428249,27.0000003 L105.532495,27.0000003 C105.532495,27.0000003 138.996741,25.6734987 138.996741,55.1771866 C138.996741,84.6808745 105.727102,82.8457535 105.727102,82.8457535 L56.1735087,82.8457535 C56.1735087,82.8457535 22.6899229,85.1500223 22.6899229,66.0913753 C22.6899229,47.0327282 56.1735087,49.3383013 56.1735087,49.3383013 L105.727102,49.3383013 C105.727102,49.3383013 111.245209,49.3383024 111.245209,54.8231115 C111.245209,60.3079206 105.727102,60.5074524 105.727102,60.5074524 L56.1735087,60.5074524 C56.1735087,60.5074524 37.48913,60.5074528 37.48913,66.6449195 C37.48913,72.7823862 56.1735087,71.6766023 56.1735087,71.6766023 L105.727102,71.6766029 C105.727102,71.6766029 127.835546,73.1411469 127.835546,55.1771866 C127.835546,35.5304025 105.727102,38.3035317 105.727102,38.3035317 L45.0428249,38.3035317 C45.0428249,38.3035317 11.5287276,38.3035313 11.5287276,66.6449208 C11.5287276,94.9863103 45.0428244,93.9579678 45.0428244,93.9579678 L105.449437,94.2138951 Z\" transform=\"translate(69.367532, 66.000000) rotate(-45.000000) translate(-69.367532, -66.000000) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/info-button": {
            "title": "$:/core/images/info-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <g transform=\"translate(0.049406, 0.000000)\">\n            <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"></path>\n            <circle cx=\"64\" cy=\"32\" r=\"8\"></circle>\n            <rect x=\"56\" y=\"48\" width=\"16\" height=\"56\" rx=\"8\"></rect>\n        </g>\n    </g>\n</svg>"
        },
        "$:/core/images/italic": {
            "title": "$:/core/images/italic",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-italic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n         <polygon points=\"66.7114846 0 89.1204482 0 62.4089636 128 40 128\"></polygon>\n    </g>\n</svg>"
        },
        "$:/core/images/left-arrow": {
            "created": "20150315234410875",
            "modified": "20150315235324760",
            "tags": "$:/tags/Image",
            "title": "$:/core/images/left-arrow",
            "text": "<svg class=\"tc-image-left-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path transform=\"rotate(135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25075c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056z\"/>\n</svg>\n"
        },
        "$:/core/images/line-width": {
            "title": "$:/core/images/line-width",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-line-width tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M128,-97 L112.992786,-97 C112.452362,-97 112,-96.5522847 112,-96 C112,-95.4438648 112.444486,-95 112.992786,-95 L128,-95 L128,-97 Z M128,-78.6794919 L111.216185,-88.3696322 C110.748163,-88.6398444 110.132549,-88.4782926 109.856406,-88 C109.578339,-87.5183728 109.741342,-86.9117318 110.216185,-86.6375814 L128,-76.3700908 L128,-78.6794919 Z M78.6794919,-128 L88.3696322,-111.216185 C88.6437826,-110.741342 88.4816272,-110.134474 88,-109.856406 C87.5217074,-109.580264 86.9077936,-109.748163 86.6375814,-110.216185 L76.3700908,-128 L78.6794919,-128 Z M97,-128 L97,-112.992786 C97,-112.444486 96.5561352,-112 96,-112 C95.4477153,-112 95,-112.452362 95,-112.992786 L95,-128 L97,-128 Z M115.629909,-128 L105.362419,-110.216185 C105.088268,-109.741342 104.481627,-109.578339 104,-109.856406 C103.521707,-110.132549 103.360156,-110.748163 103.630368,-111.216185 L113.320508,-128 L115.629909,-128 Z M128,-113.320508 L111.216185,-103.630368 C110.741342,-103.356217 110.134474,-103.518373 109.856406,-104 C109.580264,-104.478293 109.748163,-105.092206 110.216185,-105.362419 L128,-115.629909 L128,-113.320508 Z M48,-96 C48,-96.5522847 48.4523621,-97 48.9927864,-97 L79.0072136,-97 C79.5555144,-97 80,-96.5561352 80,-96 C80,-95.4477153 79.5476379,-95 79.0072136,-95 L48.9927864,-95 C48.4444856,-95 48,-95.4438648 48,-96 Z M54.4307806,-120 C54.706923,-120.478293 55.3225377,-120.639844 55.7905589,-120.369632 L81.7838153,-105.362419 C82.2586577,-105.088268 82.4216611,-104.481627 82.1435935,-104 C81.8674512,-103.521707 81.2518365,-103.360156 80.7838153,-103.630368 L54.7905589,-118.637581 C54.3157165,-118.911732 54.152713,-119.518373 54.4307806,-120 Z M104,-82.1435935 C104.478293,-82.4197359 105.092206,-82.2518365 105.362419,-81.7838153 L120.369632,-55.7905589 C120.643783,-55.3157165 120.481627,-54.7088482 120,-54.4307806 C119.521707,-54.1546382 118.907794,-54.3225377 118.637581,-54.7905589 L103.630368,-80.7838153 C103.356217,-81.2586577 103.518373,-81.865526 104,-82.1435935 Z M96,-80 C96.5522847,-80 97,-79.5476379 97,-79.0072136 L97,-48.9927864 C97,-48.4444856 96.5561352,-48 96,-48 C95.4477153,-48 95,-48.4523621 95,-48.9927864 L95,-79.0072136 C95,-79.5555144 95.4438648,-80 96,-80 Z M88,-82.1435935 C88.4782926,-81.8674512 88.6398444,-81.2518365 88.3696322,-80.7838153 L73.3624186,-54.7905589 C73.0882682,-54.3157165 72.4816272,-54.152713 72,-54.4307806 C71.5217074,-54.706923 71.3601556,-55.3225377 71.6303678,-55.7905589 L86.6375814,-81.7838153 C86.9117318,-82.2586577 87.5183728,-82.4216611 88,-82.1435935 Z M82.1435935,-88 C82.4197359,-87.5217074 82.2518365,-86.9077936 81.7838153,-86.6375814 L55.7905589,-71.6303678 C55.3157165,-71.3562174 54.7088482,-71.5183728 54.4307806,-72 C54.1546382,-72.4782926 54.3225377,-73.0922064 54.7905589,-73.3624186 L80.7838153,-88.3696322 C81.2586577,-88.6437826 81.865526,-88.4816272 82.1435935,-88 Z M1.30626177e-08,-41.9868843 L15.0170091,-57.9923909 L20.7983821,-52.9749272 L44.7207091,-81.2095939 L73.4260467,-42.1002685 L85.984793,-56.6159488 L104.48741,-34.0310661 L127.969109,-47.4978019 L127.969109,7.99473128e-07 L1.30626177e-08,7.99473128e-07 L1.30626177e-08,-41.9868843 Z M96,-84 C102.627417,-84 108,-89.372583 108,-96 C108,-102.627417 102.627417,-108 96,-108 C89.372583,-108 84,-102.627417 84,-96 C84,-89.372583 89.372583,-84 96,-84 Z\"></path>\n        <path d=\"M16,18 L112,18 C113.104569,18 114,17.1045695 114,16 C114,14.8954305 113.104569,14 112,14 L16,14 C14.8954305,14 14,14.8954305 14,16 C14,17.1045695 14.8954305,18 16,18 L16,18 Z M16,35 L112,35 C114.209139,35 116,33.209139 116,31 C116,28.790861 114.209139,27 112,27 L16,27 C13.790861,27 12,28.790861 12,31 C12,33.209139 13.790861,35 16,35 L16,35 Z M16,56 L112,56 C115.313708,56 118,53.3137085 118,50 C118,46.6862915 115.313708,44 112,44 L16,44 C12.6862915,44 10,46.6862915 10,50 C10,53.3137085 12.6862915,56 16,56 L16,56 Z M16,85 L112,85 C117.522847,85 122,80.5228475 122,75 C122,69.4771525 117.522847,65 112,65 L16,65 C10.4771525,65 6,69.4771525 6,75 C6,80.5228475 10.4771525,85 16,85 L16,85 Z M16,128 L112,128 C120.836556,128 128,120.836556 128,112 C128,103.163444 120.836556,96 112,96 L16,96 C7.163444,96 0,103.163444 0,112 C0,120.836556 7.163444,128 16,128 L16,128 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/link": {
            "title": "$:/core/images/link",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-link tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M128.719999,57.568543 C130.219553,53.8628171 131.045202,49.8121445 131.045202,45.5685425 C131.045202,27.8915447 116.718329,13.5685425 99.0452364,13.5685425 L67.0451674,13.5685425 C49.3655063,13.5685425 35.0452019,27.8954305 35.0452019,45.5685425 C35.0452019,63.2455403 49.3720745,77.5685425 67.0451674,77.5685425 L99.0452364,77.5685425 C100.406772,77.5685425 101.748384,77.4835732 103.065066,77.3186499 C96.4792444,73.7895096 91.1190212,68.272192 87.7873041,61.5685425 L67.0506214,61.5685425 C58.2110723,61.5685425 51.0452019,54.4070414 51.0452019,45.5685425 C51.0452019,36.7319865 58.2005234,29.5685425 67.0506214,29.5685425 L99.0397824,29.5685425 C107.879331,29.5685425 115.045202,36.7300436 115.045202,45.5685425 C115.045202,48.9465282 113.99957,52.0800164 112.21335,54.6623005 C114.314383,56.4735917 117.050039,57.5685425 120.041423,57.5685425 L128.720003,57.5685425 Z\" transform=\"translate(83.045202, 45.568542) rotate(-225.000000) translate(-83.045202, -45.568542)\"></path>\n        <path d=\"M-0.106255113,71.0452019 C-1.60580855,74.7509276 -2.43145751,78.8016001 -2.43145751,83.0452019 C-2.43145751,100.7222 11.8954151,115.045202 29.568508,115.045202 L61.568577,115.045202 C79.2482381,115.045202 93.5685425,100.718314 93.5685425,83.0452019 C93.5685425,65.3682041 79.2416699,51.0452019 61.568577,51.0452019 L29.568508,51.0452019 C28.206973,51.0452019 26.8653616,51.1301711 25.5486799,51.2950943 C32.1345,54.8242347 37.4947231,60.3415524 40.8264403,67.0452019 L61.563123,67.0452019 C70.4026721,67.0452019 77.5685425,74.206703 77.5685425,83.0452019 C77.5685425,91.8817579 70.413221,99.0452019 61.563123,99.0452019 L29.573962,99.0452019 C20.7344129,99.0452019 13.5685425,91.8837008 13.5685425,83.0452019 C13.5685425,79.6672162 14.6141741,76.533728 16.4003949,73.9514439 C14.2993609,72.1401527 11.5637054,71.0452019 8.5723215,71.0452019 L-0.106255113,71.0452019 Z\" transform=\"translate(45.568542, 83.045202) rotate(-225.000000) translate(-45.568542, -83.045202)\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/list-bullet": {
            "title": "$:/core/images/list-bullet",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-list-bullet tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M11.6363636,40.2727273 C18.0629498,40.2727273 23.2727273,35.0629498 23.2727273,28.6363636 C23.2727273,22.2097775 18.0629498,17 11.6363636,17 C5.20977746,17 0,22.2097775 0,28.6363636 C0,35.0629498 5.20977746,40.2727273 11.6363636,40.2727273 Z M11.6363636,75.1818182 C18.0629498,75.1818182 23.2727273,69.9720407 23.2727273,63.5454545 C23.2727273,57.1188684 18.0629498,51.9090909 11.6363636,51.9090909 C5.20977746,51.9090909 0,57.1188684 0,63.5454545 C0,69.9720407 5.20977746,75.1818182 11.6363636,75.1818182 Z M11.6363636,110.090909 C18.0629498,110.090909 23.2727273,104.881132 23.2727273,98.4545455 C23.2727273,92.0279593 18.0629498,86.8181818 11.6363636,86.8181818 C5.20977746,86.8181818 0,92.0279593 0,98.4545455 C0,104.881132 5.20977746,110.090909 11.6363636,110.090909 Z M34.9090909,22.8181818 L128,22.8181818 L128,34.4545455 L34.9090909,34.4545455 L34.9090909,22.8181818 Z M34.9090909,57.7272727 L128,57.7272727 L128,69.3636364 L34.9090909,69.3636364 L34.9090909,57.7272727 Z M34.9090909,92.6363636 L128,92.6363636 L128,104.272727 L34.9090909,104.272727 L34.9090909,92.6363636 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/list-number": {
            "title": "$:/core/images/list-number",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-list-number tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M33.8390805,22.3563218 L128,22.3563218 L128,34.1264368 L33.8390805,34.1264368 L33.8390805,22.3563218 Z M33.8390805,57.6666667 L128,57.6666667 L128,69.4367816 L33.8390805,69.4367816 L33.8390805,57.6666667 Z M33.8390805,92.9770115 L128,92.9770115 L128,104.747126 L33.8390805,104.747126 L33.8390805,92.9770115 Z M0.379509711,42.6307008 L0.379509711,40.4082314 L1.37821948,40.4082314 C2.20382368,40.4082314 2.82301754,40.268077 3.23581964,39.9877642 C3.64862174,39.7074513 3.85501969,39.0400498 3.85501969,37.9855395 L3.85501969,22.7686318 C3.85501969,21.3270228 3.66193774,20.4327047 3.27576803,20.0856507 C2.88959832,19.7385967 1.79768657,19.5650723 0,19.5650723 L0,17.4226919 C3.50215975,17.2758613 6.25191314,16.4683055 8.24934266,15 L10.3666074,15 L10.3666074,37.865406 C10.3666074,38.786434 10.5164123,39.4404875 10.8160268,39.8275862 C11.1156412,40.2146849 11.764796,40.4082314 12.7635108,40.4082314 L13.7622206,40.4082314 L13.7622206,42.6307008 L0.379509711,42.6307008 Z M0.0798967812,77.9873934 L0.0798967812,76.0852799 C7.27064304,69.5312983 10.8659622,63.5046623 10.8659622,58.005191 C10.8659622,56.4434479 10.5397203,55.195407 9.88722667,54.2610308 C9.23473303,53.3266546 8.36253522,52.8594735 7.27060709,52.8594735 C6.3784219,52.8594735 5.61608107,53.1764892 4.98356173,53.8105302 C4.35104238,54.4445712 4.03478745,55.1753759 4.03478745,56.0029663 C4.03478745,56.9773871 4.28113339,57.8316611 4.77383268,58.5658139 C4.88036225,58.7259926 4.93362624,58.8461249 4.93362624,58.9262143 C4.93362624,59.0730449 4.77383427,59.2065252 4.45424555,59.3266593 C4.2411864,59.4067486 3.70188852,59.6336652 2.83633573,60.0074156 C1.99741533,60.3811661 1.47809145,60.5680386 1.2783485,60.5680386 C1.03865696,60.5680386 0.765679018,60.1976307 0.459406492,59.4568039 C0.153133966,58.715977 0,57.9184322 0,57.0641453 C0,55.1153036 0.848894811,53.5202138 2.5467099,52.2788283 C4.24452499,51.0374428 6.34512352,50.4167594 8.84856852,50.4167594 C11.3120649,50.4167594 13.3793735,51.0874979 15.0505562,52.4289952 C16.7217389,53.7704924 17.5573177,55.5224215 17.5573177,57.684835 C17.5573177,58.9662652 17.2743527,60.2076321 16.7084144,61.4089729 C16.142476,62.6103138 14.7875733,64.4623531 12.6436656,66.9651465 C10.4997579,69.4679398 8.40914641,71.7804862 6.3717683,73.902855 L17.8169822,73.902855 L16.7982982,79.6292176 L14.6810335,79.6292176 C14.7609307,79.3489048 14.8008787,79.0952922 14.8008787,78.8683723 C14.8008787,78.4812736 14.7010087,78.237672 14.5012658,78.1375603 C14.3015228,78.0374485 13.9020429,77.9873934 13.3028141,77.9873934 L0.0798967812,77.9873934 Z M12.2042333,97.1935484 C13.9486551,97.2335931 15.4400468,97.8309175 16.6784531,98.9855395 C17.9168594,100.140162 18.5360532,101.75861 18.5360532,103.840934 C18.5360532,106.830938 17.4041935,109.233584 15.14044,111.048943 C12.8766866,112.864303 10.1402492,113.771969 6.93104577,113.771969 C4.92030005,113.771969 3.26245842,113.388213 1.95747114,112.62069 C0.652483855,111.853166 0,110.848727 0,109.607341 C0,108.833144 0.26964894,108.209124 0.808954909,107.735261 C1.34826088,107.261399 1.93749375,107.024472 2.57667119,107.024472 C3.21584864,107.024472 3.73850152,107.224692 4.14464552,107.625139 C4.55078953,108.025586 4.92696644,108.67964 5.27318756,109.587319 C5.73925445,110.855401 6.51158227,111.489433 7.59019421,111.489433 C8.85523291,111.489433 9.87723568,111.012241 10.6562332,110.057842 C11.4352307,109.103444 11.8247236,107.371536 11.8247236,104.862069 C11.8247236,103.153495 11.7048796,101.838714 11.4651881,100.917686 C11.2254966,99.9966584 10.6728827,99.5361513 9.80732989,99.5361513 C9.22141723,99.5361513 8.62219737,99.843156 8.00965231,100.457175 C7.51695303,100.951059 7.07752513,101.197998 6.69135542,101.197998 C6.3584505,101.197998 6.08880156,101.051169 5.88240051,100.757508 C5.67599946,100.463847 5.57280049,100.183539 5.57280049,99.916574 C5.57280049,99.5962164 5.67599946,99.3225818 5.88240051,99.0956618 C6.08880156,98.8687419 6.57150646,98.5016711 7.33052967,97.9944383 C10.2068282,96.0722929 11.6449559,93.9766521 11.6449559,91.7074527 C11.6449559,90.5194601 11.3386879,89.615131 10.7261429,88.9944383 C10.1135978,88.3737455 9.37455999,88.0634038 8.5090072,88.0634038 C7.71003539,88.0634038 6.98431355,88.3270274 6.33181991,88.8542825 C5.67932627,89.3815377 5.35308434,90.0122321 5.35308434,90.7463849 C5.35308434,91.3871 5.60608828,91.9810874 6.11210376,92.5283648 C6.28521432,92.7285883 6.3717683,92.8954387 6.3717683,93.028921 C6.3717683,93.1490551 5.80250943,93.4560598 4.6639746,93.9499444 C3.52543978,94.4438289 2.80970494,94.6907675 2.51674861,94.6907675 C2.10394651,94.6907675 1.76771758,94.3570667 1.50805174,93.6896552 C1.24838591,93.0222436 1.11855494,92.4082342 1.11855494,91.8476085 C1.11855494,90.0989901 2.04734573,88.6240327 3.90495518,87.4226919 C5.76256463,86.2213511 7.86982116,85.6206897 10.226788,85.6206897 C12.2907985,85.6206897 14.0784711,86.0678487 15.5898594,86.9621802 C17.1012478,87.8565117 17.8569306,89.0778566 17.8569306,90.6262514 C17.8569306,91.987771 17.2876717,93.2491599 16.1491369,94.4104561 C15.0106021,95.5717522 13.6956474,96.4994404 12.2042333,97.1935484 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/list": {
            "title": "$:/core/images/list",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-list tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M0.719999312,185.568543 C2.21955287,181.862817 3.0452019,177.812144 3.0452019,173.568542 C3.0452019,155.891545 -11.2816707,141.568542 -28.9547636,141.568542 L-60.9548326,141.568542 C-78.6344937,141.568542 -92.9547981,155.895431 -92.9547981,173.568542 C-92.9547981,191.24554 -78.6279255,205.568542 -60.9548326,205.568542 L-28.9547636,205.568542 C-27.593228,205.568542 -26.2516158,205.483573 -24.9349335,205.31865 C-31.5207556,201.78951 -36.8809788,196.272192 -40.2126959,189.568542 L-60.9493786,189.568542 C-69.7889277,189.568542 -76.9547981,182.407041 -76.9547981,173.568542 C-76.9547981,164.731986 -69.7994766,157.568542 -60.9493786,157.568542 L-28.9602176,157.568542 C-20.1206685,157.568542 -12.9547981,164.730044 -12.9547981,173.568542 C-12.9547981,176.946528 -14.0004297,180.080016 -15.7866505,182.6623 C-13.6856165,184.473592 -10.949961,185.568542 -7.9585771,185.568542 L0.720002586,185.568542 Z\" transform=\"translate(-44.954798, 173.568542) rotate(-225.000000) translate(44.954798, -173.568542) \"></path>\n        <path d=\"M87.7480315,128 L23.9992458,128 C19.5813843,128 16,124.409247 16,119.993027 L16,8.00697327 C16,3.58484404 19.5881049,0 23.9992458,0 L104.000754,0 C108.418616,0 112,3.59075293 112,8.00697327 L112,104 L91.2492027,104 C90.2848199,104 89.410573,104.391703 88.7768998,105.025201 C88.1373658,105.661376 87.7480315,106.53563 87.7480315,107.501171 L87.7480315,128 Z M95.7480315,127.879386 L111.627417,112 L95.7480315,112 L95.7480315,127.879386 Z M40,15.5089165 C40,13.5709954 41.5636015,12 43.4998101,12 L98.5001899,12 C100.433082,12 102,13.5614718 102,15.5089165 L102,16.4910835 C102,18.4290046 100.436399,20 98.5001899,20 L43.4998101,20 C41.5669183,20 40,18.4385282 40,16.4910835 L40,15.5089165 Z M32,22 C35.3137085,22 38,19.3137085 38,16 C38,12.6862915 35.3137085,10 32,10 C28.6862915,10 26,12.6862915 26,16 C26,19.3137085 28.6862915,22 32,22 Z M40,31.5089165 C40,29.5709954 41.5636015,28 43.4998101,28 L98.5001899,28 C100.433082,28 102,29.5614718 102,31.5089165 L102,32.4910835 C102,34.4290046 100.436399,36 98.5001899,36 L43.4998101,36 C41.5669183,36 40,34.4385282 40,32.4910835 L40,31.5089165 Z M40,47.5089165 C40,45.5709954 41.5636015,44 43.4998101,44 L98.5001899,44 C100.433082,44 102,45.5614718 102,47.5089165 L102,48.4910835 C102,50.4290046 100.436399,52 98.5001899,52 L43.4998101,52 C41.5669183,52 40,50.4385282 40,48.4910835 L40,47.5089165 Z M40,63.5089165 C40,61.5709954 41.5636015,60 43.4998101,60 L98.5001899,60 C100.433082,60 102,61.5614718 102,63.5089165 L102,64.4910835 C102,66.4290046 100.436399,68 98.5001899,68 L43.4998101,68 C41.5669183,68 40,66.4385282 40,64.4910835 L40,63.5089165 Z M40,79.5089165 C40,77.5709954 41.5636015,76 43.4998101,76 L98.5001899,76 C100.433082,76 102,77.5614718 102,79.5089165 L102,80.4910835 C102,82.4290046 100.436399,84 98.5001899,84 L43.4998101,84 C41.5669183,84 40,82.4385282 40,80.4910835 L40,79.5089165 Z M40,95.5089165 C40,93.5709954 41.5636015,92 43.4998101,92 L98.5001899,92 C100.433082,92 102,93.5614718 102,95.5089165 L102,96.4910835 C102,98.4290046 100.436399,100 98.5001899,100 L43.4998101,100 C41.5669183,100 40,98.4385282 40,96.4910835 L40,95.5089165 Z M40,111.508916 C40,109.570995 41.5680474,108 43.4972017,108 L76.5027983,108 C78.4342495,108 80,109.561472 80,111.508916 L80,112.491084 C80,114.429005 78.4319526,116 76.5027983,116 L43.4972017,116 C41.5657505,116 40,114.438528 40,112.491084 L40,111.508916 Z M32,38 C35.3137085,38 38,35.3137085 38,32 C38,28.6862915 35.3137085,26 32,26 C28.6862915,26 26,28.6862915 26,32 C26,35.3137085 28.6862915,38 32,38 Z M32,54 C35.3137085,54 38,51.3137085 38,48 C38,44.6862915 35.3137085,42 32,42 C28.6862915,42 26,44.6862915 26,48 C26,51.3137085 28.6862915,54 32,54 Z M32,70 C35.3137085,70 38,67.3137085 38,64 C38,60.6862915 35.3137085,58 32,58 C28.6862915,58 26,60.6862915 26,64 C26,67.3137085 28.6862915,70 32,70 Z M32,86 C35.3137085,86 38,83.3137085 38,80 C38,76.6862915 35.3137085,74 32,74 C28.6862915,74 26,76.6862915 26,80 C26,83.3137085 28.6862915,86 32,86 Z M32,102 C35.3137085,102 38,99.3137085 38,96 C38,92.6862915 35.3137085,90 32,90 C28.6862915,90 26,92.6862915 26,96 C26,99.3137085 28.6862915,102 32,102 Z M32,118 C35.3137085,118 38,115.313708 38,112 C38,108.686292 35.3137085,106 32,106 C28.6862915,106 26,108.686292 26,112 C26,115.313708 28.6862915,118 32,118 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/locked-padlock": {
            "title": "$:/core/images/locked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-locked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M96.4723753,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L32.0000269,64 C32.0028554,48.2766389 32.3030338,16.2688026 64.1594984,16.2688041 C95.9543927,16.2688056 96.4648869,48.325931 96.4723753,64 Z M80.5749059,64 L48.4413579,64 C48.4426205,47.71306 48.5829272,31.9999996 64.1595001,31.9999996 C79.8437473,31.9999996 81.1369461,48.1359182 80.5749059,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/mail": {
            "title": "$:/core/images/mail",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-mail tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M122.826782,104.894066 C121.945525,105.22777 120.990324,105.41043 119.993027,105.41043 L8.00697327,105.41043 C7.19458381,105.41043 6.41045219,105.289614 5.67161357,105.064967 L5.67161357,105.064967 L39.8346483,70.9019325 L60.6765759,91.7438601 C61.6118278,92.679112 62.8865166,93.0560851 64.0946097,92.8783815 C65.2975108,93.0473238 66.5641085,92.6696979 67.4899463,91.7438601 L88.5941459,70.6396605 C88.6693095,70.7292352 88.7490098,70.8162939 88.8332479,70.9005321 L122.826782,104.894066 Z M127.903244,98.6568194 C127.966933,98.2506602 128,97.8343714 128,97.4103789 L128,33.410481 C128,32.7414504 127.917877,32.0916738 127.763157,31.4706493 L94.2292399,65.0045665 C94.3188145,65.0797417 94.4058701,65.1594458 94.4901021,65.2436778 L127.903244,98.6568194 Z M0.205060636,99.2178117 C0.0709009529,98.6370366 0,98.0320192 0,97.4103789 L0,33.410481 C0,32.694007 0.0944223363,31.9995312 0.27147538,31.3387595 L0.27147538,31.3387595 L34.1777941,65.2450783 L0.205060636,99.2178117 L0.205060636,99.2178117 Z M5.92934613,25.6829218 C6.59211333,25.5051988 7.28862283,25.4104299 8.00697327,25.4104299 L119.993027,25.4104299 C120.759109,25.4104299 121.500064,25.5178649 122.201605,25.7184927 L122.201605,25.7184927 L64.0832611,83.8368368 L5.92934613,25.6829218 L5.92934613,25.6829218 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/menu-button": {
            "title": "$:/core/images/menu-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <rect x=\"0\" y=\"16\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n    <rect x=\"0\" y=\"56\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n    <rect x=\"0\" y=\"96\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n</svg>"
        },
        "$:/core/images/mono-block": {
            "title": "$:/core/images/mono-block",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-mono-block tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M23.9653488,32.9670593 L24.3217888,32.9670593 C25.0766067,32.9670593 25.6497006,33.1592554 26.0410876,33.5436534 C26.4324747,33.9280514 26.6281653,34.4906619 26.6281653,35.2315017 C26.6281653,36.0562101 26.4219913,36.6502709 26.009637,37.0137017 C25.5972828,37.3771326 24.9158602,37.5588453 23.9653488,37.5588453 L17.6542639,37.5588453 C16.6897744,37.5588453 16.0048573,37.380627 15.5994921,37.0241852 C15.1941269,36.6677435 14.9914474,36.0701882 14.9914474,35.2315017 C14.9914474,34.4207713 15.1941269,33.8406885 15.5994921,33.4912358 C16.0048573,33.141783 16.6897744,32.9670593 17.6542639,32.9670593 L18.388111,32.9670593 L17.5284616,30.5139133 L8.47069195,30.5139133 L7.5691084,32.9670593 L8.30295547,32.9670593 C9.25346691,32.9670593 9.93488953,33.1452775 10.3472438,33.5017193 C10.759598,33.8581611 10.965772,34.4347494 10.965772,35.2315017 C10.965772,36.0562101 10.759598,36.6502709 10.3472438,37.0137017 C9.93488953,37.3771326 9.25346691,37.5588453 8.30295547,37.5588453 L2.89345418,37.5588453 C1.92896463,37.5588453 1.24404754,37.3771326 0.838682371,37.0137017 C0.433317198,36.6502709 0.230637652,36.0562101 0.230637652,35.2315017 C0.230637652,34.4906619 0.426328248,33.9280514 0.817715312,33.5436534 C1.20910238,33.1592554 1.78219626,32.9670593 2.53701417,32.9670593 L2.89345418,32.9670593 L8.51262607,17.3256331 L6.83526132,17.3256331 C5.88474988,17.3256331 5.20332727,17.1439204 4.79097304,16.7804895 C4.37861882,16.4170587 4.1724448,15.8299869 4.1724448,15.0192565 C4.1724448,14.1945481 4.37861882,13.6004873 4.79097304,13.2370565 C5.20332727,12.8736257 5.88474988,12.691913 6.83526132,12.691913 L14.6979086,12.691913 C15.9419603,12.691913 16.815579,13.3628521 17.318791,14.7047506 L17.318791,14.7676518 L23.9653488,32.9670593 Z M12.9786097,17.3256331 L9.9383861,26.1737321 L16.0188333,26.1737321 L12.9786097,17.3256331 Z M35.3809383,26.6979086 L35.3809383,33.0928616 L38.5259972,33.0928616 C40.7485166,33.0928616 42.3140414,32.8482484 43.2226185,32.3590146 C44.1311956,31.8697807 44.5854773,31.0520736 44.5854773,29.9058686 C44.5854773,28.7456855 44.1521624,27.9209895 43.2855197,27.4317556 C42.4188769,26.9425218 40.9022748,26.6979086 38.7356678,26.6979086 L35.3809383,26.6979086 Z M46.0741385,24.370565 C47.5977525,24.9296893 48.7159844,25.6949794 49.428868,26.666458 C50.1417516,27.6379366 50.498188,28.8784752 50.498188,30.388111 C50.498188,31.6601189 50.1906743,32.8202846 49.5756374,33.8686428 C48.9606006,34.917001 48.0799929,35.7766419 46.933788,36.4475911 C46.2628387,36.8389782 45.5115266,37.1220307 44.6798291,37.296757 C43.8481316,37.4714834 42.6704935,37.5588453 41.1468796,37.5588453 L39.3856466,37.5588453 L30.2020747,37.5588453 C29.2795194,37.5588453 28.6190637,37.3771326 28.2206876,37.0137017 C27.8223114,36.6502709 27.6231264,36.0562101 27.6231264,35.2315017 C27.6231264,34.4906619 27.811828,33.9280514 28.189237,33.5436534 C28.5666459,33.1592554 29.118773,32.9670593 29.8456347,32.9670593 L30.2020747,32.9670593 L30.2020747,17.3256331 L29.8456347,17.3256331 C29.118773,17.3256331 28.5666459,17.1299425 28.189237,16.7385554 C27.811828,16.3471683 27.6231264,15.7740744 27.6231264,15.0192565 C27.6231264,14.2085262 27.8258059,13.6179599 28.2311711,13.24754 C28.6365363,12.8771201 29.2934976,12.691913 30.2020747,12.691913 L39.8469219,12.691913 C42.796303,12.691913 45.0362615,13.2650068 46.5668644,14.4112118 C48.0974674,15.5574168 48.8627574,17.2347648 48.8627574,19.443306 C48.8627574,20.5335986 48.6286276,21.4945792 48.1603609,22.3262767 C47.6920943,23.1579742 46.9966938,23.8393968 46.0741385,24.370565 L46.0741385,24.370565 Z M35.3809383,17.1998307 L35.3809383,22.4835296 L38.2114913,22.4835296 C39.9307988,22.4835296 41.1433816,22.2808501 41.8492761,21.8754849 C42.5551706,21.4701197 42.9081126,20.7852027 42.9081126,19.8207131 C42.9081126,18.912136 42.5901154,18.2481858 41.9541114,17.8288425 C41.3181074,17.4094992 40.2872373,17.1998307 38.8614701,17.1998307 L35.3809383,17.1998307 Z M71.244119,13.3838259 C71.5236812,12.880614 71.8102281,12.5241775 72.1037684,12.3145059 C72.3973087,12.1048342 72.7677231,12 73.2150226,12 C73.8999499,12 74.3856819,12.1817127 74.6722332,12.5451435 C74.9587844,12.9085744 75.1020579,13.5305909 75.1020579,14.4112118 L75.143992,19.8626472 C75.143992,20.8271368 74.9867406,21.4771091 74.6722332,21.8125837 C74.3577257,22.1480584 73.7881263,22.3157932 72.9634178,22.3157932 C72.3763372,22.3157932 71.92555,22.1760142 71.6110425,21.896452 C71.2965351,21.6168898 71.0274605,21.0997075 70.8038107,20.3448896 C70.4403799,19.0169692 69.8602971,18.0629775 69.0635448,17.482886 C68.2667926,16.9027945 67.1625385,16.612753 65.7507494,16.612753 C63.5981206,16.612753 61.9487284,17.3396038 60.8025235,18.7933272 C59.6563185,20.2470506 59.0832246,22.3507245 59.0832246,25.104412 C59.0832246,27.8441215 59.6633074,29.9477954 60.8234905,31.4154969 C61.9836736,32.8831984 63.6400547,33.6170381 65.7926836,33.6170381 C67.2603851,33.6170381 68.878327,33.1278116 70.6465578,32.149344 C72.4147886,31.1708763 73.5295261,30.6816498 73.9908037,30.6816498 C74.53595,30.6816498 74.9937262,30.9122852 75.3641461,31.3735628 C75.734566,31.8348404 75.9197732,32.4079343 75.9197732,33.0928616 C75.9197732,34.3229353 74.836486,35.4831009 72.669879,36.5733935 C70.5032721,37.663686 68.0641285,38.2088241 65.3523753,38.2088241 C61.6901107,38.2088241 58.7267959,36.9997358 56.4623422,34.5815228 C54.1978885,32.1633099 53.0656786,29.0043046 53.0656786,25.104412 C53.0656786,21.3443006 54.2118664,18.22024 56.5042763,15.7321366 C58.7966863,13.2440331 61.7040894,12 65.226573,12 C66.2190187,12 67.1974717,12.1118232 68.1619613,12.3354729 C69.1264508,12.5591227 70.1538264,12.9085702 71.244119,13.3838259 L71.244119,13.3838259 Z M81.4645862,32.9670593 L81.4645862,17.3256331 L81.1081461,17.3256331 C80.3533282,17.3256331 79.7802344,17.1299425 79.3888473,16.7385554 C78.9974602,16.3471683 78.8017696,15.7740744 78.8017696,15.0192565 C78.8017696,14.2085262 79.0114381,13.6179599 79.4307814,13.24754 C79.8501247,12.8771201 80.5280528,12.691913 81.4645862,12.691913 L85.4063933,12.691913 L86.6434498,12.691913 C89.5648747,12.691913 91.7034933,12.8177141 93.0593699,13.06932 C94.4152465,13.320926 95.5684233,13.740263 96.5189347,14.3273436 C98.210286,15.3337675 99.5067362,16.7699967 100.408324,18.6360743 C101.309912,20.5021519 101.7607,22.6582429 101.7607,25.104412 C101.7607,27.6903623 101.247012,29.9512876 100.219621,31.8872557 C99.1922296,33.8232239 97.7350336,35.2874089 95.8479888,36.2798546 C94.9953241,36.7271541 93.9959043,37.0521403 92.8496993,37.2548229 C91.7034944,37.4575055 89.9981906,37.5588453 87.7337369,37.5588453 L85.4063933,37.5588453 L81.4645862,37.5588453 C80.5000966,37.5588453 79.8151795,37.380627 79.4098143,37.0241852 C79.0044492,36.6677435 78.8017696,36.0701882 78.8017696,35.2315017 C78.8017696,34.4906619 78.9974602,33.9280514 79.3888473,33.5436534 C79.7802344,33.1592554 80.3533282,32.9670593 81.1081461,32.9670593 L81.4645862,32.9670593 Z M86.8740874,17.2417648 L86.8740874,32.9670593 L88.0692098,32.9670593 C90.7110725,32.9670593 92.6609895,32.3205814 93.9190194,31.0276063 C95.1770492,29.7346312 95.8060547,27.7462749 95.8060547,25.0624779 C95.8060547,22.4206153 95.1665658,20.4497314 93.8875688,19.1497672 C92.6085718,17.849803 90.6831161,17.1998307 88.1111439,17.1998307 C87.7756693,17.1998307 87.5205727,17.2033252 87.3458463,17.2103142 C87.1711199,17.2173033 87.0138685,17.2277867 86.8740874,17.2417648 L86.8740874,17.2417648 Z M121.94052,17.1159625 L112.190837,17.1159625 L112.190837,22.4835296 L115.88104,22.4835296 L115.88104,22.2319249 C115.88104,21.4351727 116.055763,20.841112 116.405216,20.4497249 C116.754669,20.0583378 117.285829,19.8626472 117.998713,19.8626472 C118.627728,19.8626472 119.141415,20.0408655 119.539792,20.3973072 C119.938168,20.753749 120.137353,21.2045363 120.137353,21.7496826 C120.137353,21.7776388 120.144342,21.8684951 120.15832,22.0222543 C120.172298,22.1760135 120.179287,22.3297704 120.179287,22.4835296 L120.179287,26.8237109 C120.179287,27.7602442 120.011552,28.4311834 119.676077,28.8365486 C119.340603,29.2419138 118.795465,29.4445933 118.040647,29.4445933 C117.327763,29.4445933 116.789614,29.2558917 116.426183,28.8784827 C116.062752,28.5010738 115.88104,27.9419578 115.88104,27.201118 L115.88104,26.8237109 L112.190837,26.8237109 L112.190837,33.0928616 L121.94052,33.0928616 L121.94052,30.5977816 C121.94052,29.6612482 122.118738,28.9903091 122.47518,28.5849439 C122.831622,28.1795787 123.415199,27.9768992 124.225929,27.9768992 C125.022682,27.9768992 125.592281,28.1760842 125.934745,28.5744604 C126.277208,28.9728365 126.448438,29.6472701 126.448438,30.5977816 L126.448438,35.6718099 C126.448438,36.4266278 126.30167,36.9298322 126.008129,37.1814382 C125.714589,37.4330442 125.134506,37.5588453 124.267863,37.5588453 L107.095842,37.5588453 C106.173287,37.5588453 105.512831,37.3771326 105.114455,37.0137017 C104.716079,36.6502709 104.516894,36.0562101 104.516894,35.2315017 C104.516894,34.4906619 104.705595,33.9280514 105.083004,33.5436534 C105.460413,33.1592554 106.01254,32.9670593 106.739402,32.9670593 L107.095842,32.9670593 L107.095842,17.3256331 L106.739402,17.3256331 C106.026518,17.3256331 105.477886,17.126448 105.093488,16.7280719 C104.70909,16.3296957 104.516894,15.7600963 104.516894,15.0192565 C104.516894,14.2085262 104.719573,13.6179599 105.124938,13.24754 C105.530304,12.8771201 106.187265,12.691913 107.095842,12.691913 L124.267863,12.691913 C125.120528,12.691913 125.697116,12.8212085 125.997646,13.0798036 C126.298175,13.3383986 126.448438,13.8520864 126.448438,14.6208824 L126.448438,19.3175037 C126.448438,20.2680151 126.273714,20.9494377 125.924261,21.361792 C125.574808,21.7741462 125.008703,21.9803202 124.225929,21.9803202 C123.415199,21.9803202 122.831622,21.7706517 122.47518,21.3513084 C122.118738,20.9319652 121.94052,20.254037 121.94052,19.3175037 L121.94052,17.1159625 Z M19.7719369,47.6405477 C20.037521,47.1373358 20.3205734,46.7808993 20.6211028,46.5712277 C20.9216322,46.361556 21.295541,46.2567218 21.7428405,46.2567218 C22.4277678,46.2567218 22.9134998,46.4384345 23.2000511,46.8018653 C23.4866023,47.1652962 23.6298758,47.7873127 23.6298758,48.6679336 L23.6718099,54.119369 C23.6718099,55.0838586 23.5145586,55.7338309 23.2000511,56.0693055 C22.8855436,56.4047802 22.3089553,56.572515 21.4702687,56.572515 C20.8831881,56.572515 20.4254119,56.4292415 20.0969263,56.1426902 C19.7684407,55.856139 19.4993662,55.3424512 19.2896945,54.6016114 C18.9122856,53.2597129 18.3322027,52.3022267 17.5494286,51.7291243 C16.7666545,51.1560218 15.6693894,50.8694748 14.2576003,50.8694748 C12.1049715,50.8694748 10.4590738,51.5963256 9.31985785,53.050049 C8.18064193,54.5037724 7.61104252,56.6074463 7.61104252,59.3611338 C7.61104252,62.1148214 8.20859773,64.2429566 9.40372609,65.7456034 C10.5988544,67.2482501 12.2936748,67.9995623 14.488238,67.9995623 C14.9914499,67.9995623 15.5645438,67.9401562 16.2075368,67.8213423 C16.8505299,67.7025283 17.6053364,67.5173212 18.4719792,67.2657152 L18.4719792,63.9529198 L16.1027015,63.9529198 C15.1521901,63.9529198 14.4777564,63.7781961 14.0793803,63.4287433 C13.6810042,63.0792906 13.4818191,62.4992078 13.4818191,61.6884774 C13.4818191,60.8497908 13.6810042,60.2522356 14.0793803,59.8957938 C14.4777564,59.5393521 15.1521901,59.3611338 16.1027015,59.3611338 L23.6718099,59.3611338 C24.6502776,59.3611338 25.3386891,59.5358576 25.7370653,59.8853103 C26.1354414,60.2347631 26.3346265,60.8218348 26.3346265,61.6465433 C26.3346265,62.3873831 26.1354414,62.9569825 25.7370653,63.3553586 C25.3386891,63.7537347 24.7621008,63.9529198 24.0072829,63.9529198 L23.6718099,63.9529198 L23.6718099,68.9430799 L23.6718099,69.1946846 C23.6718099,69.6419841 23.6228873,69.9529924 23.5250405,70.1277188 C23.4271937,70.3024451 23.2315031,70.4806634 22.9379628,70.6623788 C22.1412106,71.1376345 20.8762107,71.5569715 19.1429251,71.9204023 C17.4096396,72.2838332 15.6554131,72.4655459 13.8801932,72.4655459 C10.2179286,72.4655459 7.25461383,71.2564576 4.99016011,68.8382446 C2.72570638,66.4200317 1.59349651,63.2610264 1.59349651,59.3611338 C1.59349651,55.6010224 2.73968428,52.4769618 5.03209423,49.9888583 C7.32450417,47.5007549 10.2319073,46.2567218 13.7543909,46.2567218 C14.7328585,46.2567218 15.7078171,46.368545 16.6792957,46.5921947 C17.6507743,46.8158445 18.6816444,47.165292 19.7719369,47.6405477 L19.7719369,47.6405477 Z M35.611576,51.5823548 L35.611576,56.4047785 L42.4678043,56.4047785 L42.4678043,51.5823548 L42.1323314,51.5823548 C41.3775135,51.5823548 40.8009251,51.3866642 40.402549,50.9952772 C40.0041729,50.6038901 39.8049878,50.0307962 39.8049878,49.2759783 C39.8049878,48.4512699 40.0111618,47.8572091 40.4235161,47.4937783 C40.8358703,47.1303474 41.5172929,46.9486347 42.4678043,46.9486347 L47.8773056,46.9486347 C48.8278171,46.9486347 49.5022507,47.1303474 49.9006269,47.4937783 C50.299003,47.8572091 50.498188,48.4512699 50.498188,49.2759783 C50.498188,50.0307962 50.3059919,50.6038901 49.9215939,50.9952772 C49.5371959,51.3866642 48.9745854,51.5823548 48.2337456,51.5823548 L47.8773056,51.5823548 L47.8773056,67.2237811 L48.2337456,67.2237811 C48.9885636,67.2237811 49.5616574,67.4159772 49.9530445,67.8003752 C50.3444316,68.1847732 50.5401222,68.7473837 50.5401222,69.4882235 C50.5401222,70.3129319 50.3374426,70.9069927 49.9320774,71.2704235 C49.5267123,71.6338543 48.8417952,71.815567 47.8773056,71.815567 L42.4678043,71.815567 C41.5033148,71.815567 40.8183977,71.6373488 40.4130325,71.280907 C40.0076674,70.9244652 39.8049878,70.32691 39.8049878,69.4882235 C39.8049878,68.7473837 40.0041729,68.1847732 40.402549,67.8003752 C40.8009251,67.4159772 41.3775135,67.2237811 42.1323314,67.2237811 L42.4678043,67.2237811 L42.4678043,61.0384986 L35.611576,61.0384986 L35.611576,67.2237811 L35.9470489,67.2237811 C36.7018668,67.2237811 37.2784552,67.4159772 37.6768313,67.8003752 C38.0752074,68.1847732 38.2743925,68.7473837 38.2743925,69.4882235 C38.2743925,70.3129319 38.0682185,70.9069927 37.6558642,71.2704235 C37.24351,71.6338543 36.5620874,71.815567 35.611576,71.815567 L30.2020747,71.815567 C29.2375851,71.815567 28.552668,71.6373488 28.1473029,71.280907 C27.7419377,70.9244652 27.5392581,70.32691 27.5392581,69.4882235 C27.5392581,68.7473837 27.7349487,68.1847732 28.1263358,67.8003752 C28.5177229,67.4159772 29.0908168,67.2237811 29.8456347,67.2237811 L30.2020747,67.2237811 L30.2020747,51.5823548 L29.8456347,51.5823548 C29.1047949,51.5823548 28.5421844,51.3866642 28.1577864,50.9952772 C27.7733884,50.6038901 27.5811923,50.0307962 27.5811923,49.2759783 C27.5811923,48.4512699 27.7803773,47.8572091 28.1787534,47.4937783 C28.5771296,47.1303474 29.2515632,46.9486347 30.2020747,46.9486347 L35.611576,46.9486347 C36.5481093,46.9486347 37.2260374,47.1303474 37.6453807,47.4937783 C38.064724,47.8572091 38.2743925,48.4512699 38.2743925,49.2759783 C38.2743925,50.0307962 38.0752074,50.6038901 37.6768313,50.9952772 C37.2784552,51.3866642 36.7018668,51.5823548 35.9470489,51.5823548 L35.611576,51.5823548 Z M67.365213,51.5823548 L67.365213,67.2237811 L70.887679,67.2237811 C71.8381904,67.2237811 72.519613,67.4019993 72.9319673,67.7584411 C73.3443215,68.1148829 73.5504955,68.6914712 73.5504955,69.4882235 C73.5504955,70.2989538 73.340827,70.8895201 72.9214837,71.25994 C72.5021404,71.6303599 71.8242123,71.815567 70.887679,71.815567 L58.4332458,71.815567 C57.4827343,71.815567 56.8013117,71.6338543 56.3889575,71.2704235 C55.9766033,70.9069927 55.7704292,70.3129319 55.7704292,69.4882235 C55.7704292,68.6774931 55.9731088,68.0974103 56.378474,67.7479575 C56.7838391,67.3985048 57.4687562,67.2237811 58.4332458,67.2237811 L61.9557117,67.2237811 L61.9557117,51.5823548 L58.4332458,51.5823548 C57.4827343,51.5823548 56.8013117,51.4006421 56.3889575,51.0372113 C55.9766033,50.6737805 55.7704292,50.0867087 55.7704292,49.2759783 C55.7704292,48.4512699 55.9731088,47.8641981 56.378474,47.5147453 C56.7838391,47.1652926 57.4687562,46.9905689 58.4332458,46.9905689 L70.887679,46.9905689 C71.8801247,46.9905689 72.5720308,47.1652926 72.9634178,47.5147453 C73.3548049,47.8641981 73.5504955,48.4512699 73.5504955,49.2759783 C73.5504955,50.0867087 73.347816,50.6737805 72.9424508,51.0372113 C72.5370856,51.4006421 71.8521685,51.5823548 70.887679,51.5823548 L67.365213,51.5823548 Z M97.8608265,51.5823548 L97.8608265,63.1771386 L97.8608265,63.5755127 C97.8608265,65.4485794 97.7385199,66.8044357 97.493903,67.6431222 C97.2492861,68.4818088 96.8404325,69.2296264 96.26733,69.8865976 C95.5264902,70.7392623 94.4991146,71.3822457 93.1851723,71.815567 C91.87123,72.2488884 90.2917273,72.4655459 88.4466169,72.4655459 C87.1466527,72.4655459 85.8921362,72.3397448 84.6830298,72.0881388 C83.4739233,71.8365328 82.3102631,71.4591296 81.1920144,70.9559176 C80.5769776,70.6763554 80.175113,70.31293 79.9864085,69.8656305 C79.797704,69.418331 79.7033532,68.6914802 79.7033532,67.6850564 L79.7033532,63.3658422 C79.7033532,62.1637247 79.8780769,61.3250508 80.2275297,60.849795 C80.5769824,60.3745393 81.185021,60.136915 82.0516638,60.136915 C83.2957156,60.136915 83.9806326,61.0524675 84.1064356,62.8835998 C84.1204137,63.2050963 84.1413806,63.4497096 84.1693368,63.6174469 C84.3370741,65.2389076 84.7144774,66.3466561 85.301558,66.9407258 C85.8886386,67.5347954 86.8251579,67.8318258 88.1111439,67.8318258 C89.7046484,67.8318258 90.8263749,67.4089943 91.476357,66.5633187 C92.126339,65.7176431 92.4513252,64.1765796 92.4513252,61.9400821 L92.4513252,51.5823548 L88.9288593,51.5823548 C87.9783478,51.5823548 87.2969252,51.4006421 86.884571,51.0372113 C86.4722168,50.6737805 86.2660427,50.0867087 86.2660427,49.2759783 C86.2660427,48.4512699 86.4652278,47.8641981 86.8636039,47.5147453 C87.26198,47.1652926 87.9503916,46.9905689 88.9288593,46.9905689 L99.6220595,46.9905689 C100.600527,46.9905689 101.288939,47.1652926 101.687315,47.5147453 C102.085691,47.8641981 102.284876,48.4512699 102.284876,49.2759783 C102.284876,50.0867087 102.078702,50.6737805 101.666348,51.0372113 C101.253994,51.4006421 100.572571,51.5823548 99.6220595,51.5823548 L97.8608265,51.5823548 Z M112.505343,51.5823548 L112.505343,57.9353738 L118.984165,51.4565525 C118.257303,51.3726838 117.747109,51.1665098 117.453569,50.8380242 C117.160029,50.5095387 117.013261,49.9888619 117.013261,49.2759783 C117.013261,48.4512699 117.212446,47.8572091 117.610822,47.4937783 C118.009198,47.1303474 118.683632,46.9486347 119.634143,46.9486347 L124.771073,46.9486347 C125.721584,46.9486347 126.396018,47.1303474 126.794394,47.4937783 C127.19277,47.8572091 127.391955,48.4512699 127.391955,49.2759783 C127.391955,50.0447743 127.19277,50.6213627 126.794394,51.0057607 C126.396018,51.3901587 125.812441,51.5823548 125.043645,51.5823548 L124.561402,51.5823548 L118.459988,57.641835 C119.592215,58.4805215 120.626579,59.5812811 121.563113,60.9441468 C122.499646,62.3070125 123.596911,64.400203 124.854941,67.2237811 L125.127513,67.2237811 L125.546854,67.2237811 C126.371563,67.2237811 126.98659,67.4124827 127.391955,67.7898917 C127.79732,68.1673006 128,68.7334056 128,69.4882235 C128,70.3129319 127.793826,70.9069927 127.381472,71.2704235 C126.969118,71.6338543 126.287695,71.815567 125.337183,71.815567 L122.758235,71.815567 C121.626008,71.815567 120.710456,71.0537715 120.01155,69.5301576 C119.885747,69.2505954 119.787902,69.026949 119.718012,68.8592117 C118.795456,66.9022764 117.949793,65.3926632 117.180997,64.3303269 C116.412201,63.2679906 115.510627,62.2965265 114.476247,61.4159056 L112.505343,63.302941 L112.505343,67.2237811 L112.840816,67.2237811 C113.595634,67.2237811 114.172222,67.4159772 114.570599,67.8003752 C114.968975,68.1847732 115.16816,68.7473837 115.16816,69.4882235 C115.16816,70.3129319 114.961986,70.9069927 114.549631,71.2704235 C114.137277,71.6338543 113.455855,71.815567 112.505343,71.815567 L107.095842,71.815567 C106.131352,71.815567 105.446435,71.6373488 105.04107,71.280907 C104.635705,70.9244652 104.433025,70.32691 104.433025,69.4882235 C104.433025,68.7473837 104.628716,68.1847732 105.020103,67.8003752 C105.41149,67.4159772 105.984584,67.2237811 106.739402,67.2237811 L107.095842,67.2237811 L107.095842,51.5823548 L106.739402,51.5823548 C105.998562,51.5823548 105.435952,51.3866642 105.051554,50.9952772 C104.667156,50.6038901 104.474959,50.0307962 104.474959,49.2759783 C104.474959,48.4512699 104.674145,47.8572091 105.072521,47.4937783 C105.470897,47.1303474 106.14533,46.9486347 107.095842,46.9486347 L112.505343,46.9486347 C113.441877,46.9486347 114.119805,47.1303474 114.539148,47.4937783 C114.958491,47.8572091 115.16816,48.4512699 115.16816,49.2759783 C115.16816,50.0307962 114.968975,50.6038901 114.570599,50.9952772 C114.172222,51.3866642 113.595634,51.5823548 112.840816,51.5823548 L112.505343,51.5823548 Z M13.439885,96.325622 L17.4445933,84.4372993 C17.6961993,83.6545252 18.0456468,83.0849258 18.4929463,82.728484 C18.9402458,82.3720422 19.5343065,82.193824 20.2751463,82.193824 L23.5460076,82.193824 C24.496519,82.193824 25.1779416,82.3755367 25.5902958,82.7389675 C26.0026501,83.1023984 26.2088241,83.6964591 26.2088241,84.5211676 C26.2088241,85.2759855 26.009639,85.8490794 25.6112629,86.2404664 C25.2128868,86.6318535 24.6362984,86.8275441 23.8814805,86.8275441 L23.5460076,86.8275441 L24.1330852,102.46897 L24.4895252,102.46897 C25.2443431,102.46897 25.8104481,102.661166 26.187857,103.045564 C26.565266,103.429962 26.7539676,103.992573 26.7539676,104.733413 C26.7539676,105.558121 26.5547826,106.152182 26.1564064,106.515613 C25.7580303,106.879044 25.0835967,107.060756 24.1330852,107.060756 L19.4154969,107.060756 C18.4649855,107.060756 17.7905518,106.882538 17.3921757,106.526096 C16.9937996,106.169654 16.7946145,105.572099 16.7946145,104.733413 C16.7946145,103.992573 16.9868106,103.429962 17.3712086,103.045564 C17.7556066,102.661166 18.325206,102.46897 19.0800239,102.46897 L19.4154969,102.46897 L19.1219581,89.6790642 L16.0607674,99.1981091 C15.8371177,99.9109927 15.5191204,100.42468 15.1067662,100.739188 C14.694412,101.053695 14.1248126,101.210947 13.3979509,101.210947 C12.6710892,101.210947 12.0945008,101.053695 11.6681685,100.739188 C11.2418362,100.42468 10.91685,99.9109927 10.6932002,99.1981091 L7.65297664,89.6790642 L7.35943781,102.46897 L7.69491075,102.46897 C8.44972866,102.46897 9.01932808,102.661166 9.40372609,103.045564 C9.78812409,103.429962 9.98032022,103.992573 9.98032022,104.733413 C9.98032022,105.558121 9.77764067,106.152182 9.3722755,106.515613 C8.96691032,106.879044 8.29597114,107.060756 7.35943781,107.060756 L2.62088241,107.060756 C1.68434908,107.060756 1.01340989,106.879044 0.608044719,106.515613 C0.202679546,106.152182 0,105.558121 0,104.733413 C0,103.992573 0.192196121,103.429962 0.57659413,103.045564 C0.960992139,102.661166 1.53059155,102.46897 2.28540946,102.46897 L2.62088241,102.46897 L3.22892713,86.8275441 L2.89345418,86.8275441 C2.13863627,86.8275441 1.56204791,86.6318535 1.16367179,86.2404664 C0.765295672,85.8490794 0.5661106,85.2759855 0.5661106,84.5211676 C0.5661106,83.6964591 0.772284622,83.1023984 1.18463885,82.7389675 C1.59699308,82.3755367 2.27841569,82.193824 3.22892713,82.193824 L6.49978838,82.193824 C7.22665007,82.193824 7.81022738,82.3685477 8.25053783,82.7180005 C8.69084827,83.0674532 9.05077919,83.6405471 9.33034138,84.4372993 L13.439885,96.325622 Z M43.8935644,98.3803938 L43.8935644,86.8275441 L42.7403761,86.8275441 C41.8178209,86.8275441 41.1573651,86.6458314 40.758989,86.2824006 C40.3606129,85.9189697 40.1614278,85.3318979 40.1614278,84.5211676 C40.1614278,83.7104372 40.3606129,83.119871 40.758989,82.7494511 C41.1573651,82.3790312 41.8178209,82.193824 42.7403761,82.193824 L48.6950209,82.193824 C49.6035981,82.193824 50.2605593,82.3790312 50.6659245,82.7494511 C51.0712897,83.119871 51.2739692,83.7104372 51.2739692,84.5211676 C51.2739692,85.2620074 51.0817731,85.8316068 50.6973751,86.2299829 C50.3129771,86.628359 49.7643445,86.8275441 49.051461,86.8275441 L48.6950209,86.8275441 L48.6950209,105.865634 C48.6950209,106.522605 48.6251315,106.934953 48.4853504,107.10269 C48.3455693,107.270428 48.0310665,107.354295 47.5418327,107.354295 L45.4451268,107.354295 C44.7741775,107.354295 44.3024234,107.284406 44.0298503,107.144625 C43.7572771,107.004843 43.5231473,106.76023 43.3274538,106.410777 L34.6051571,91.0838571 L34.6051571,102.46897 L35.8212466,102.46897 C36.7298237,102.46897 37.379796,102.643694 37.7711831,102.993147 C38.1625701,103.3426 38.3582607,103.922682 38.3582607,104.733413 C38.3582607,105.558121 38.1590757,106.152182 37.7606995,106.515613 C37.3623234,106.879044 36.7158456,107.060756 35.8212466,107.060756 L29.8037005,107.060756 C28.8951234,107.060756 28.2381621,106.879044 27.832797,106.515613 C27.4274318,106.152182 27.2247522,105.558121 27.2247522,104.733413 C27.2247522,103.992573 27.4134539,103.429962 27.7908629,103.045564 C28.1682718,102.661166 28.7273878,102.46897 29.4682276,102.46897 L29.8037005,102.46897 L29.8037005,86.8275441 L29.4682276,86.8275441 C28.755344,86.8275441 28.203217,86.628359 27.8118299,86.2299829 C27.4204428,85.8316068 27.2247522,85.2620074 27.2247522,84.5211676 C27.2247522,83.7104372 27.4309263,83.119871 27.8432805,82.7494511 C28.2556347,82.3790312 28.9091015,82.193824 29.8037005,82.193824 L33.2422983,82.193824 C34.0670067,82.193824 34.6261227,82.3021527 34.919663,82.5188134 C35.2132033,82.7354741 35.5416839,83.1722835 35.9051148,83.8292546 L43.8935644,98.3803938 Z M64.6604624,86.3662688 C62.8572863,86.3662688 61.4420239,87.0931196 60.4146329,88.546843 C59.3872418,90.0005663 58.873554,92.0203728 58.873554,94.6063231 C58.873554,97.1922733 59.3907363,99.2190688 60.4251164,100.68677 C61.4594965,102.154472 62.8712644,102.888312 64.6604624,102.888312 C66.4636385,102.888312 67.8823953,102.157966 68.9167754,100.697254 C69.9511555,99.2365414 70.4683378,97.2062514 70.4683378,94.6063231 C70.4683378,92.0203728 69.95465,90.0005663 68.9272589,88.546843 C67.8998679,87.0931196 66.4776166,86.3662688 64.6604624,86.3662688 L64.6604624,86.3662688 Z M64.6604624,81.501911 C68.0990773,81.501911 70.929602,82.7319662 73.1521214,85.1921135 C75.3746408,87.6522607 76.4858838,90.7902992 76.4858838,94.6063231 C76.4858838,98.4503032 75.3816297,101.595331 73.1730884,104.0415 C70.9645471,106.487669 68.1270335,107.710735 64.6604624,107.710735 C61.2358256,107.710735 58.4053009,106.477185 56.1688034,104.010049 C53.9323059,101.542913 52.8140739,98.4083688 52.8140739,94.6063231 C52.8140739,90.7763211 53.9218224,87.6347881 56.1373528,85.1816299 C58.3528831,82.7284717 61.1938912,81.501911 64.6604624,81.501911 L64.6604624,81.501911 Z M87.4611651,98.1707232 L87.4611651,102.46897 L89.6207722,102.46897 C90.5293493,102.46897 91.1758272,102.643694 91.5602252,102.993147 C91.9446232,103.3426 92.1368193,103.922682 92.1368193,104.733413 C92.1368193,105.558121 91.9411287,106.152182 91.5497417,106.515613 C91.1583546,106.879044 90.5153712,107.060756 89.6207722,107.060756 L82.3661697,107.060756 C81.4436145,107.060756 80.7831587,106.879044 80.3847826,106.515613 C79.9864065,106.152182 79.7872214,105.558121 79.7872214,104.733413 C79.7872214,103.992573 79.9759231,103.429962 80.353332,103.045564 C80.730741,102.661166 81.282868,102.46897 82.0097297,102.46897 L82.3661697,102.46897 L82.3661697,86.8275441 L82.0097297,86.8275441 C81.2968461,86.8275441 80.7482136,86.628359 80.3638155,86.2299829 C79.9794175,85.8316068 79.7872214,85.2620074 79.7872214,84.5211676 C79.7872214,83.7104372 79.989901,83.119871 80.3952661,82.7494511 C80.8006313,82.3790312 81.4575926,82.193824 82.3661697,82.193824 L91.0255652,82.193824 C94.450202,82.193824 97.0396079,82.8507853 98.7938606,84.1647276 C100.548113,85.4786699 101.425227,87.414609 101.425227,89.972603 C101.425227,92.6703781 100.551608,94.7111515 98.8043442,96.0949843 C97.0570805,97.4788171 94.4641801,98.1707232 91.0255652,98.1707232 L87.4611651,98.1707232 Z M87.4611651,86.8275441 L87.4611651,93.4531348 L90.4384875,93.4531348 C92.0879044,93.4531348 93.328443,93.1735768 94.1601405,92.6144525 C94.9918381,92.0553281 95.4076806,91.2166541 95.4076806,90.0984053 C95.4076806,89.0500471 94.9778602,88.2428234 94.1182064,87.67671 C93.2585527,87.1105966 92.031992,86.8275441 90.4384875,86.8275441 L87.4611651,86.8275441 Z M114.727851,107.396229 L113.092421,109.03166 C113.69348,108.835966 114.284046,108.689198 114.864137,108.591352 C115.444229,108.493505 116.013828,108.444582 116.572953,108.444582 C117.677223,108.444582 118.840883,108.608823 120.063968,108.937308 C121.287053,109.265794 122.031376,109.430034 122.29696,109.430034 C122.744259,109.430034 123.327837,109.279772 124.047709,108.979242 C124.767582,108.678713 125.253314,108.52845 125.50492,108.52845 C126.02211,108.52845 126.45193,108.727636 126.794394,109.126012 C127.136858,109.524388 127.308087,110.024098 127.308087,110.625156 C127.308087,111.421909 126.836333,112.099837 125.892811,112.658961 C124.949288,113.218086 123.792617,113.497643 122.422762,113.497643 C121.486229,113.497643 120.28413,113.277492 118.816428,112.837181 C117.348727,112.396871 116.286406,112.176719 115.629435,112.176719 C114.636989,112.176719 113.518757,112.449288 112.274706,112.994434 C111.030654,113.53958 110.261869,113.812149 109.968329,113.812149 C109.36727,113.812149 108.857077,113.612964 108.437734,113.214588 C108.01839,112.816212 107.808722,112.337469 107.808722,111.778345 C107.808722,111.386958 107.941512,110.971115 108.207096,110.530805 C108.47268,110.090494 108.94094,109.520895 109.611889,108.821989 L111.729562,106.683349 C109.395218,105.830685 107.536157,104.29661 106.152324,102.08108 C104.768491,99.8655494 104.076585,97.3180772 104.076585,94.4385866 C104.076585,90.6365409 105.180839,87.5299526 107.389381,85.1187288 C109.597922,82.7075049 112.442425,81.501911 115.922974,81.501911 C119.389545,81.501911 122.227059,82.7109994 124.4356,85.1292123 C126.644141,87.5474252 127.748395,90.650519 127.748395,94.4385866 C127.748395,98.2126762 126.65113,101.322759 124.456567,103.768928 C122.262004,106.215097 119.480402,107.438163 116.111677,107.438163 C115.888028,107.438163 115.660887,107.434669 115.430248,107.42768 C115.199609,107.420691 114.965479,107.410207 114.727851,107.396229 L114.727851,107.396229 Z M115.922974,86.3662688 C114.119798,86.3662688 112.704535,87.0931196 111.677144,88.546843 C110.649753,90.0005663 110.136065,92.0203728 110.136065,94.6063231 C110.136065,97.1922733 110.653248,99.2190688 111.687628,100.68677 C112.722008,102.154472 114.133776,102.888312 115.922974,102.888312 C117.72615,102.888312 119.144907,102.157966 120.179287,100.697254 C121.213667,99.2365414 121.730849,97.2062514 121.730849,94.6063231 C121.730849,92.0203728 121.217161,90.0005663 120.18977,88.546843 C119.162379,87.0931196 117.740128,86.3662688 115.922974,86.3662688 L115.922974,86.3662688 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/mono-line": {
            "title": "$:/core/images/mono-line",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-mono-line tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M60.4374591,84.522627 L61.3450888,84.522627 C63.2671377,84.522627 64.7264493,85.0120303 65.7230673,85.9908515 C66.7196852,86.9696727 67.2179868,88.4022896 67.2179868,90.288745 C67.2179868,92.3887615 66.6929905,93.9014625 65.6429823,94.8268935 C64.5929741,95.7523244 62.857817,96.215033 60.4374591,96.215033 L44.3670747,96.215033 C41.9111232,96.215033 40.1670679,95.7612227 39.1348565,94.8535884 C38.102645,93.9459542 37.586547,92.424355 37.586547,90.288745 C37.586547,88.2243221 38.102645,86.747214 39.1348565,85.8573766 C40.1670679,84.9675391 41.9111232,84.522627 44.3670747,84.522627 L46.235724,84.522627 L44.0467348,78.2759992 L20.9822627,78.2759992 L18.6864935,84.522627 L20.5551429,84.522627 C22.9755008,84.522627 24.7106579,84.9764373 25.7606661,85.8840716 C26.8106743,86.7917058 27.3356705,88.2599156 27.3356705,90.288745 C27.3356705,92.3887615 26.8106743,93.9014625 25.7606661,94.8268935 C24.7106579,95.7523244 22.9755008,96.215033 20.5551429,96.215033 L6.78052766,96.215033 C4.32457622,96.215033 2.58052094,95.7523244 1.54830946,94.8268935 C0.516097994,93.9014625 0,92.3887615 0,90.288745 C0,88.4022896 0.498301511,86.9696727 1.49491948,85.9908515 C2.49153745,85.0120303 3.95084902,84.522627 5.87289797,84.522627 L6.78052766,84.522627 L21.0890427,44.6937008 L16.8178442,44.6937008 C14.3974863,44.6937008 12.6623292,44.2309922 11.612321,43.3055613 C10.5623128,42.3801303 10.0373165,40.8852258 10.0373165,38.8208028 C10.0373165,36.7207864 10.5623128,35.2080854 11.612321,34.2826544 C12.6623292,33.3572234 14.3974863,32.8945149 16.8178442,32.8945149 L36.8390873,32.8945149 C40.0069087,32.8945149 42.231469,34.6029772 43.512835,38.0199531 L43.512835,38.180123 L60.4374591,84.522627 Z M32.4611088,44.6937008 L24.7195615,67.224273 L40.2026561,67.224273 L32.4611088,44.6937008 Z M89.5058233,68.5590225 L89.5058233,84.8429669 L97.5143205,84.8429669 C103.173687,84.8429669 107.160099,84.22009 109.473676,82.9743176 C111.787254,81.7285451 112.944025,79.6463566 112.944025,76.7276897 C112.944025,73.7734293 111.840643,71.6734444 109.633846,70.4276719 C107.427049,69.1818994 103.565213,68.5590225 98.0482204,68.5590225 L89.5058233,68.5590225 Z M116.734714,62.6327346 C120.614405,64.0564746 123.461842,66.0051894 125.277111,68.4789376 C127.092379,70.9526857 128,74.1115614 128,77.9556593 C128,81.1946677 127.216955,84.1488838 125.650841,86.8183962 C124.084727,89.4879087 121.84237,91.676876 118.923703,93.385364 C117.215215,94.3819819 115.302093,95.1027395 113.18428,95.5476582 C111.066467,95.9925769 108.06776,96.215033 104.188068,96.215033 L99.7033098,96.215033 L76.3184979,96.215033 C73.9693269,96.215033 72.2875593,95.7523244 71.2731446,94.8268935 C70.2587299,93.9014625 69.7515301,92.3887615 69.7515301,90.288745 C69.7515301,88.4022896 70.2320352,86.9696727 71.1930596,85.9908515 C72.1540841,85.0120303 73.5600062,84.522627 75.4108682,84.522627 L76.3184979,84.522627 L76.3184979,44.6937008 L75.4108682,44.6937008 C73.5600062,44.6937008 72.1540841,44.1953993 71.1930596,43.1987813 C70.2320352,42.2021633 69.7515301,40.7428518 69.7515301,38.8208028 C69.7515301,36.7563799 70.2676281,35.2525771 71.2998396,34.3093494 C72.3320511,33.3661217 74.0049204,32.8945149 76.3184979,32.8945149 L100.877889,32.8945149 C108.388118,32.8945149 114.09189,34.3538264 117.989378,37.2724934 C121.886867,40.1911603 123.835581,44.4623161 123.835581,50.0860889 C123.835581,52.8623819 123.239399,55.3093982 122.047017,57.4272114 C120.854635,59.5450246 119.083885,61.2801816 116.734714,62.6327346 L116.734714,62.6327346 Z M89.5058233,44.3733609 L89.5058233,57.8276363 L96.7134708,57.8276363 C101.091471,57.8276363 104.179161,57.3115383 105.976633,56.2793268 C107.774104,55.2471153 108.672827,53.50306 108.672827,51.0471086 C108.672827,48.7335312 107.863087,47.0428653 106.243583,45.9750604 C104.624078,44.9072554 101.999097,44.3733609 98.3685602,44.3733609 L89.5058233,44.3733609 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/new-button": {
            "title": "$:/core/images/new-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M56,72 L8.00697327,72 C3.59075293,72 0,68.418278 0,64 C0,59.5907123 3.58484404,56 8.00697327,56 L56,56 L56,8.00697327 C56,3.59075293 59.581722,0 64,0 C68.4092877,0 72,3.58484404 72,8.00697327 L72,56 L119.993027,56 C124.409247,56 128,59.581722 128,64 C128,68.4092877 124.415156,72 119.993027,72 L72,72 L72,119.993027 C72,124.409247 68.418278,128 64,128 C59.5907123,128 56,124.415156 56,119.993027 L56,72 L56,72 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/new-here-button": {
            "title": "$:/core/images/new-here-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-here-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n    \t<g transform=\"translate(52.233611, 64.389922) rotate(75.000000) translate(-52.233611, -64.389922) translate(-7.734417, 3.702450)\">\n\t        <path d=\"M18.9270186,45.959338 L18.9080585,49.6521741 C18.8884833,53.4648378 21.0574548,58.7482162 23.7526408,61.4434022 L78.5671839,116.257945 C81.2617332,118.952495 85.6348701,118.950391 88.3334363,116.251825 L115.863237,88.7220241 C118.555265,86.0299959 118.564544,81.6509578 115.869358,78.9557717 L61.0548144,24.1412286 C58.3602652,21.4466794 53.0787224,19.2788426 49.2595808,19.3006519 L25.9781737,19.4336012 C22.1633003,19.4553862 19.0471195,22.5673232 19.0275223,26.3842526 L18.9871663,34.2443819 C19.0818862,34.255617 19.1779758,34.2665345 19.2754441,34.2771502 C22.6891275,34.6489512 27.0485594,34.2348566 31.513244,33.2285542 C31.7789418,32.8671684 32.075337,32.5211298 32.4024112,32.1940556 C34.8567584,29.7397084 38.3789778,29.0128681 41.4406288,30.0213822 C41.5958829,29.9543375 41.7503946,29.8866669 41.9041198,29.8183808 L42.1110981,30.2733467 C43.1114373,30.6972371 44.0473796,31.3160521 44.8614145,32.1300869 C48.2842088,35.5528813 48.2555691,41.130967 44.7974459,44.5890903 C41.4339531,47.952583 36.0649346,48.0717177 32.6241879,44.9262969 C27.8170558,45.8919233 23.0726921,46.2881596 18.9270186,45.959338 Z\"></path>\n\t        <path d=\"M45.4903462,38.8768094 C36.7300141,42.6833154 26.099618,44.7997354 18.1909048,43.9383587 C7.2512621,42.7468685 1.50150083,35.8404432 4.66865776,24.7010202 C7.51507386,14.6896965 15.4908218,6.92103848 24.3842626,4.38423012 C34.1310219,1.60401701 42.4070208,6.15882777 42.4070209,16.3101169 L34.5379395,16.310117 C34.5379394,11.9285862 31.728784,10.3825286 26.5666962,11.8549876 C20.2597508,13.6540114 14.3453742,19.4148216 12.2444303,26.8041943 C10.4963869,32.9523565 12.6250796,35.5092726 19.0530263,36.2093718 C25.5557042,36.9176104 35.0513021,34.9907189 42.7038419,31.5913902 L42.7421786,31.6756595 C44.3874154,31.5384763 47.8846101,37.3706354 45.9274416,38.6772897 L45.9302799,38.6835285 C45.9166992,38.6895612 45.9031139,38.6955897 45.8895238,38.7016142 C45.8389288,38.7327898 45.7849056,38.7611034 45.7273406,38.7863919 C45.6506459,38.8200841 45.571574,38.8501593 45.4903462,38.8768094 Z\"></path>\n        </g>\n        <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n        <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n    </g>\n    </g>\n</svg>"
        },
        "$:/core/images/new-image-button": {
            "title": "$:/core/images/new-image-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M81.3619177,73.6270062 L97.1875317,46.2162388 C97.91364,44.9585822 97.4824378,43.3533085 96.2260476,42.6279312 L46.2162388,13.7547547 C44.9585822,13.0286463 43.3533085,13.4598485 42.6279312,14.7162388 L30.0575956,36.4886988 L40.0978909,31.2276186 C43.1404959,29.6333041 46.8692155,31.3421319 47.6479264,34.6877101 L51.2545483,52.3903732 L61.1353556,53.2399953 C63.2899974,53.4346096 65.1046382,54.9309951 65.706105,57.0091178 C65.7395572,57.1246982 65.8069154,57.3539875 65.9047035,57.6813669 C66.0696435,58.2335608 66.2581528,58.852952 66.4667073,59.5238092 C67.0618822,61.4383079 67.6960725,63.3742727 68.3393254,65.2021174 C68.5462918,65.7902259 68.7511789,66.3583016 68.953259,66.9034738 C69.5777086,68.5881157 70.1617856,70.0172008 70.6783305,71.110045 C70.9334784,71.6498566 71.1627732,72.0871602 71.4035746,72.5373068 C71.6178999,72.7492946 71.9508843,72.9623307 72.4151452,73.1586945 C73.5561502,73.6412938 75.1990755,73.899146 77.0720271,73.9171651 C77.9355886,73.9254732 78.7819239,73.8832103 79.5638842,73.8072782 C80.0123946,73.7637257 80.3172916,73.7224469 80.4352582,73.7027375 C80.7503629,73.6500912 81.0598053,73.6256267 81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 Z M37.4707881,2.64867269 C38.9217993,0.135447653 42.1388058,-0.723707984 44.6486727,0.725364314 L108.293614,37.4707881 C110.806839,38.9217993 111.665994,42.1388058 110.216922,44.6486727 L73.4714982,108.293614 C72.0204871,110.806839 68.8034805,111.665994 66.2936136,110.216922 L2.64867269,73.4714982 C0.135447653,72.0204871 -0.723707984,68.8034805 0.725364314,66.2936136 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 Z M80.3080975,53.1397764 C82.8191338,54.5895239 86.0299834,53.7291793 87.4797308,51.218143 C88.9294783,48.7071068 88.0691338,45.4962571 85.5580975,44.0465097 C83.0470612,42.5967622 79.8362116,43.4571068 78.3864641,45.968143 C76.9367166,48.4791793 77.7970612,51.6900289 80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 Z M96,112 L88.0070969,112 C83.5881712,112 80,108.418278 80,104 C80,99.5907123 83.5848994,96 88.0070969,96 L96,96 L96,88.0070969 C96,83.5881712 99.581722,80 104,80 C108.409288,80 112,83.5848994 112,88.0070969 L112,96 L119.992903,96 C124.411829,96 128,99.581722 128,104 C128,108.409288 124.415101,112 119.992903,112 L112,112 L112,119.992903 C112,124.411829 108.418278,128 104,128 C99.5907123,128 96,124.415101 96,119.992903 L96,112 L96,112 Z M33.3471097,51.7910932 C40.7754579,59.7394511 42.3564368,62.4818351 40.7958321,65.1848818 C39.2352273,67.8879286 26.9581062,62.8571718 24.7019652,66.7649227 C22.4458242,70.6726735 23.7947046,70.0228006 22.2648667,72.6725575 L41.9944593,84.0634431 C41.9944593,84.0634431 36.3904568,75.8079231 37.7602356,73.4353966 C40.2754811,69.0788636 46.5298923,72.1787882 48.1248275,69.4162793 C50.538989,65.234829 43.0222016,59.7770885 33.3471097,51.7910932 L33.3471097,51.7910932 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/new-journal-button": {
            "title": "$:/core/images/new-journal-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-journal-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M102.545455,112.818182 L102.545455,124.636364 L102.545455,124.636364 L102.545455,124.636364 C102.545455,125.941761 103.630828,127 104.969697,127 L111.030303,127 C112.369172,127 113.454545,125.941761 113.454545,124.636364 L113.454545,112.818182 L125.575758,112.818182 C126.914626,112.818182 128,111.759982 128,110.454545 L128,104.545455 C128,103.240018 126.914626,102.181818 125.575758,102.181818 L113.454545,102.181818 L113.454545,90.3636364 C113.454545,89.0582 112.369172,88 111.030303,88 L104.969697,88 L104.969697,88 C103.630828,88 102.545455,89.0582 102.545455,90.3636364 L102.545455,102.181818 L90.4242424,102.181818 L90.4242424,102.181818 C89.0853705,102.181818 88,103.240018 88,104.545455 L88,110.454545 L88,110.454545 L88,110.454545 C88,111.759982 89.0853705,112.818182 90.4242424,112.818182 L102.545455,112.818182 Z\"></path>\n        <g transform=\"translate(59.816987, 64.316987) rotate(30.000000) translate(-59.816987, -64.316987) translate(20.316987, 12.816987)\">\n            <g transform=\"translate(0.000000, 0.000000)\">\n                <path d=\"M9.99631148,0 C4.4755011,0 -2.27373675e-13,4.48070044 -2.27373675e-13,9.99759461 L-2.27373675e-13,91.6128884 C-2.27373675e-13,97.1344074 4.46966773,101.610483 9.99631148,101.610483 L68.9318917,101.610483 C74.4527021,101.610483 78.9282032,97.1297826 78.9282032,91.6128884 L78.9282032,9.99759461 C78.9282032,4.47607557 74.4585355,0 68.9318917,0 L9.99631148,0 Z M20.8885263,26 C24.2022348,26 26.8885263,23.3137085 26.8885263,20 C26.8885263,16.6862915 24.2022348,14 20.8885263,14 C17.5748178,14 14.8885263,16.6862915 14.8885263,20 C14.8885263,23.3137085 17.5748178,26 20.8885263,26 Z M57.3033321,25.6783342 C60.6170406,25.6783342 63.3033321,22.9920427 63.3033321,19.6783342 C63.3033321,16.3646258 60.6170406,13.6783342 57.3033321,13.6783342 C53.9896236,13.6783342 51.3033321,16.3646258 51.3033321,19.6783342 C51.3033321,22.9920427 53.9896236,25.6783342 57.3033321,25.6783342 Z\"></path>\n                <text font-family=\"Helvetica\" font-size=\"47.1724138\" font-weight=\"bold\" fill=\"#FFFFFF\">\n                    <tspan x=\"42\" y=\"77.4847912\" text-anchor=\"middle\"><<now \"DD\">></tspan>\n                </text>\n            </g>\n        </g>\n    </g>\n</svg>"
        },
        "$:/core/images/opacity": {
            "title": "$:/core/images/opacity",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-opacity tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M102.361773,65 C101.833691,67.051742 101.183534,69.0544767 100.419508,71 L82.5835324,71 C83.7602504,69.1098924 84.7666304,67.1027366 85.581205,65 L102.361773,65 Z M102.834311,63 C103.256674,61.0388326 103.568427,59.0365486 103.762717,57 L87.6555706,57 C87.3692052,59.0609452 86.9083652,61.0660782 86.2884493,63 L102.834311,63 Z M99.5852583,73 C98.6682925,75.0747721 97.6196148,77.0783056 96.4498253,79 L75.8124196,79 C77.8387053,77.2115633 79.6621163,75.1985844 81.2437158,73 L99.5852583,73 Z M95.1689122,81 C93.7449202,83.1155572 92.1695234,85.1207336 90.458251,87 L60.4614747,87 C65.1836162,85.86248 69.5430327,83.794147 73.3347255,81 L95.1689122,81 Z M87.6555706,47 L103.762717,47 C101.246684,20.6269305 79.0321807,0 52,0 C23.281193,0 0,23.281193 0,52 C0,77.2277755 17.9651296,98.2595701 41.8000051,103 L62.1999949,103 C67.8794003,101.870444 73.2255333,99.8158975 78.074754,97 L39,97 L39,95 L81.2493857,95 C83.8589242,93.2215015 86.2981855,91.2116653 88.5376609,89 L39,89 L39,87 L43.5385253,87 C27.7389671,83.1940333 16,68.967908 16,52 C16,32.117749 32.117749,16 52,16 C70.1856127,16 85.2217929,29.4843233 87.6555706,47 Z M87.8767787,49 L103.914907,49 C103.971379,49.9928025 104,50.9930589 104,52 C104,53.0069411 103.971379,54.0071975 103.914907,55 L87.8767787,55 C87.958386,54.0107999 88,53.0102597 88,52 C88,50.9897403 87.958386,49.9892001 87.8767787,49 Z\"></path>\n        <path d=\"M76,128 C104.718807,128 128,104.718807 128,76 C128,47.281193 104.718807,24 76,24 C47.281193,24 24,47.281193 24,76 C24,104.718807 47.281193,128 76,128 L76,128 Z M76,112 C95.882251,112 112,95.882251 112,76 C112,56.117749 95.882251,40 76,40 C56.117749,40 40,56.117749 40,76 C40,95.882251 56.117749,112 76,112 L76,112 Z\"></path>\n        <path d=\"M37,58 L90,58 L90,62 L37,62 L37,58 L37,58 Z M40,50 L93,50 L93,54 L40,54 L40,50 L40,50 Z M40,42 L93,42 L93,46 L40,46 L40,42 L40,42 Z M32,66 L85,66 L85,70 L32,70 L32,66 L32,66 Z M30,74 L83,74 L83,78 L30,78 L30,74 L30,74 Z M27,82 L80,82 L80,86 L27,86 L27,82 L27,82 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/open-window": {
            "title": "$:/core/images/open-window",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-open-window tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M16,112 L104.993898,112 C108.863261,112 112,115.590712 112,120 C112,124.418278 108.858091,128 104.993898,128 L7.00610161,128 C3.13673853,128 0,124.409288 0,120 C0,119.998364 4.30952878e-07,119.996727 1.29273572e-06,119.995091 C4.89579306e-07,119.993456 0,119.99182 0,119.990183 L0,24.0098166 C0,19.586117 3.59071231,16 8,16 C12.418278,16 16,19.5838751 16,24.0098166 L16,112 Z\"></path>\n        <path d=\"M96,43.1959595 L96,56 C96,60.418278 99.581722,64 104,64 C108.418278,64 112,60.418278 112,56 L112,24 C112,19.5907123 108.415101,16 103.992903,16 L72.0070969,16 C67.5881712,16 64,19.581722 64,24 C64,28.4092877 67.5848994,32 72.0070969,32 L84.5685425,32 L48.2698369,68.2987056 C45.1421332,71.4264093 45.1434327,76.4904296 48.267627,79.614624 C51.3854642,82.7324612 56.4581306,82.7378289 59.5835454,79.6124141 L96,43.1959595 Z M32,7.9992458 C32,3.58138434 35.5881049,0 39.9992458,0 L120.000754,0 C124.418616,0 128,3.5881049 128,7.9992458 L128,88.0007542 C128,92.4186157 124.411895,96 120.000754,96 L39.9992458,96 C35.5813843,96 32,92.4118951 32,88.0007542 L32,7.9992458 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/options-button": {
            "title": "$:/core/images/options-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-options-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M110.48779,76.0002544 C109.354214,80.4045063 107.611262,84.5641217 105.354171,88.3838625 L105.354171,88.3838625 L112.07833,95.1080219 C115.20107,98.2307613 115.210098,103.299824 112.089164,106.420759 L106.420504,112.089418 C103.301049,115.208874 98.2346851,115.205502 95.1077675,112.078585 L88.3836082,105.354425 C84.5638673,107.611516 80.4042519,109.354468 76,110.488045 L76,110.488045 L76,119.993281 C76,124.409501 72.4220153,128.000254 68.0083475,128.000254 L59.9916525,128.000254 C55.5800761,128.000254 52,124.41541 52,119.993281 L52,110.488045 C47.5957481,109.354468 43.4361327,107.611516 39.6163918,105.354425 L32.8922325,112.078585 C29.7694931,115.201324 24.7004301,115.210353 21.5794957,112.089418 L15.9108363,106.420759 C12.7913807,103.301303 12.7947522,98.2349395 15.9216697,95.1080219 L22.6458291,88.3838625 C20.3887383,84.5641217 18.6457859,80.4045063 17.5122098,76.0002544 L8.00697327,76.0002544 C3.59075293,76.0002544 2.19088375e-16,72.4222697 4.89347582e-16,68.0086019 L9.80228577e-16,59.9919069 C1.25035972e-15,55.5803305 3.58484404,52.0002544 8.00697327,52.0002544 L17.5122098,52.0002544 C18.6457859,47.5960025 20.3887383,43.4363871 22.6458291,39.6166462 L15.9216697,32.8924868 C12.7989304,29.7697475 12.7899019,24.7006845 15.9108363,21.5797501 L21.5794957,15.9110907 C24.6989513,12.7916351 29.7653149,12.7950065 32.8922325,15.9219241 L39.6163918,22.6460835 C43.4361327,20.3889927 47.5957481,18.6460403 52,17.5124642 L52,8.00722764 C52,3.5910073 55.5779847,0.000254375069 59.9916525,0.000254375069 L68.0083475,0.000254375069 C72.4199239,0.000254375069 76,3.58509841 76,8.00722764 L76,17.5124642 C80.4042519,18.6460403 84.5638673,20.3889927 88.3836082,22.6460835 L95.1077675,15.9219241 C98.2305069,12.7991848 103.29957,12.7901562 106.420504,15.9110907 L112.089164,21.5797501 C115.208619,24.6992057 115.205248,29.7655693 112.07833,32.8924868 L105.354171,39.6166462 L105.354171,39.6166462 C107.611262,43.4363871 109.354214,47.5960025 110.48779,52.0002544 L119.993027,52.0002544 C124.409247,52.0002544 128,55.5782391 128,59.9919069 L128,68.0086019 C128,72.4201783 124.415156,76.0002544 119.993027,76.0002544 L110.48779,76.0002544 L110.48779,76.0002544 Z M64,96.0002544 C81.673112,96.0002544 96,81.6733664 96,64.0002544 C96,46.3271424 81.673112,32.0002544 64,32.0002544 C46.326888,32.0002544 32,46.3271424 32,64.0002544 C32,81.6733664 46.326888,96.0002544 64,96.0002544 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/paint": {
            "title": "$:/core/images/paint",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-paint tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M83.5265806,76.1907935 C90.430962,69.2864121 91.8921169,59.0000433 87.9100453,50.6642209 L125.812763,12.7615036 C128.732035,9.84223095 128.72611,5.10322984 125.812796,2.18991592 C122.893542,-0.729338085 118.161775,-0.730617045 115.241209,2.18994966 L77.3384914,40.092667 C69.002669,36.1105954 58.7163002,37.5717503 51.8119188,44.4761317 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 Z M80.8836921,78.8336819 L49.1690303,47.1190201 C49.1690303,47.1190201 8.50573364,81.242543 0,80.2820711 C0,80.2820711 3.78222974,85.8744423 6.82737483,88.320684 C20.8514801,82.630792 44.1526049,63.720771 44.1526049,63.720771 L44.8144806,64.3803375 C44.8144806,64.3803375 19.450356,90.2231043 9.18040433,92.0477601 C10.4017154,93.4877138 13.5343883,96.1014812 15.4269991,97.8235871 C20.8439164,96.3356979 50.1595367,69.253789 50.1595367,69.253789 L50.8214124,69.9133555 L18.4136144,100.936036 L23.6993903,106.221812 L56.1060358,75.2002881 L56.7679115,75.8598546 C56.7679115,75.8598546 28.9040131,106.396168 28.0841366,108.291555 C28.0841366,108.291555 34.1159238,115.144621 35.6529617,116.115796 C36.3545333,113.280171 63.5365402,82.6307925 63.5365402,82.6307925 L64.1984159,83.290359 C64.1984159,83.290359 43.6013016,107.04575 39.2343772,120.022559 C42.443736,123.571575 46.7339155,125.159692 50.1595362,126.321151 C47.9699978,114.504469 80.8836921,78.8336819 80.8836921,78.8336819 L80.8836921,78.8336819 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/palette": {
            "title": "$:/core/images/palette",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-palette tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M80.2470434,39.1821571 C75.0645698,38.2680897 69.6261555,37.7814854 64.0193999,37.7814854 C28.6624616,37.7814854 0,57.1324214 0,81.0030106 C0,90.644534 4.67604329,99.5487133 12.5805659,106.738252 C23.5031767,91.1899067 26.3405471,72.3946229 36.8885698,63.5622337 C52.0716764,50.8486559 63.4268694,55.7343343 63.4268694,55.7343343 L80.2470434,39.1821571 Z M106.781666,48.8370714 C119.830962,56.749628 128.0388,68.229191 128.0388,81.0030106 C128.0388,90.3534932 128.557501,98.4142085 116.165191,106.082518 C105.367708,112.763955 112.341384,99.546808 104.321443,95.1851533 C96.3015017,90.8234987 84.3749007,96.492742 86.1084305,103.091059 C89.3087234,115.272303 105.529892,114.54645 92.4224435,119.748569 C79.3149955,124.950687 74.2201582,124.224536 64.0193999,124.224536 C56.1979176,124.224536 48.7040365,123.277578 41.7755684,121.544216 C51.620343,117.347916 69.6563669,109.006202 75.129737,102.088562 C82.7876655,92.4099199 87.3713218,80.0000002 83.3235694,72.4837191 C83.1303943,72.1250117 94.5392656,60.81569 106.781666,48.8370714 Z M1.13430476,123.866563 C0.914084026,123.867944 0.693884185,123.868637 0.473712455,123.868637 C33.9526848,108.928928 22.6351223,59.642592 59.2924543,59.6425917 C59.6085574,61.0606542 59.9358353,62.5865065 60.3541977,64.1372318 C34.4465025,59.9707319 36.7873124,112.168427 1.13429588,123.866563 L1.13430476,123.866563 Z M1.84669213,123.859694 C40.7185279,123.354338 79.9985412,101.513051 79.9985401,79.0466836 C70.7284906,79.0466835 65.9257264,75.5670082 63.1833375,71.1051511 C46.585768,64.1019718 32.81846,116.819636 1.84665952,123.859695 L1.84669213,123.859694 Z M67.1980193,59.8524981 C62.748213,63.9666823 72.0838429,76.2846822 78.5155805,71.1700593 C89.8331416,59.8524993 112.468264,37.2173758 123.785825,25.8998146 C135.103386,14.5822535 123.785825,3.26469247 112.468264,14.5822535 C101.150703,25.8998144 78.9500931,48.9868127 67.1980193,59.8524981 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/permalink-button": {
            "title": "$:/core/images/permalink-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-permalink-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M80.4834582,48 L73.0956761,80 L73.0956761,80 L47.5165418,80 L54.9043239,48 L80.4834582,48 Z M84.1773493,32 L89.8007299,7.64246248 C90.7941633,3.33942958 95.0918297,0.64641956 99.3968675,1.64031585 C103.693145,2.63218977 106.385414,6.93288901 105.390651,11.2416793 L100.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L96.9043239,48 L89.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L85.8226507,96 L80.1992701,120.357538 C79.2058367,124.66057 74.9081703,127.35358 70.6031325,126.359684 C66.3068546,125.36781 63.6145865,121.067111 64.6093491,116.758321 L69.401785,96 L43.8226507,96 L38.1992701,120.357538 C37.2058367,124.66057 32.9081703,127.35358 28.6031325,126.359684 C24.3068546,125.36781 21.6145865,121.067111 22.6093491,116.758321 L27.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L31.0956761,80 L38.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L42.1773493,32 L47.8007299,7.64246248 C48.7941633,3.33942958 53.0918297,0.64641956 57.3968675,1.64031585 C61.6931454,2.63218977 64.3854135,6.93288901 63.3906509,11.2416793 L58.598215,32 L84.1773493,32 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/permaview-button": {
            "title": "$:/core/images/permaview-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-permaview-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M81.4834582,48 L79.6365127,56 L79.6365127,56 L74.0573784,56 L75.9043239,48 L81.4834582,48 Z M85.1773493,32 L90.8007299,7.64246248 C91.7941633,3.33942958 96.0918297,0.64641956 100.396867,1.64031585 C104.693145,2.63218977 107.385414,6.93288901 106.390651,11.2416793 L101.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L97.9043239,48 L96.0573784,56 L104.000754,56 C108.411895,56 112,59.581722 112,64 C112,68.4092877 108.418616,72 104.000754,72 L92.3634873,72 L90.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L86.8226507,96 L81.1992701,120.357538 C80.2058367,124.66057 75.9081703,127.35358 71.6031325,126.359684 C67.3068546,125.36781 64.6145865,121.067111 65.6093491,116.758321 L70.401785,96 L64.8226507,96 L59.1992701,120.357538 C58.2058367,124.66057 53.9081703,127.35358 49.6031325,126.359684 C45.3068546,125.36781 42.6145865,121.067111 43.6093491,116.758321 L48.401785,96 L42.8226507,96 L37.1992701,120.357538 C36.2058367,124.66057 31.9081703,127.35358 27.6031325,126.359684 C23.3068546,125.36781 20.6145865,121.067111 21.6093491,116.758321 L26.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L30.0956761,80 L31.9426216,72 L23.9992458,72 C19.5881049,72 16,68.418278 16,64 C16,59.5907123 19.5813843,56 23.9992458,56 L35.6365127,56 L37.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L41.1773493,32 L46.8007299,7.64246248 C47.7941633,3.33942958 52.0918297,0.64641956 56.3968675,1.64031585 C60.6931454,2.63218977 63.3854135,6.93288901 62.3906509,11.2416793 L57.598215,32 L63.1773493,32 L68.8007299,7.64246248 C69.7941633,3.33942958 74.0918297,0.64641956 78.3968675,1.64031585 C82.6931454,2.63218977 85.3854135,6.93288901 84.3906509,11.2416793 L79.598215,32 L85.1773493,32 Z M53.9043239,48 L52.0573784,56 L57.6365127,56 L59.4834582,48 L53.9043239,48 Z M75.9426216,72 L74.0956761,80 L74.0956761,80 L68.5165418,80 L70.3634873,72 L75.9426216,72 L75.9426216,72 Z M48.3634873,72 L46.5165418,80 L52.0956761,80 L53.9426216,72 L48.3634873,72 L48.3634873,72 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/picture": {
            "title": "$:/core/images/picture",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-picture tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M112,68.2332211 L112,20.0027785 C112,17.7898769 110.207895,16 107.997221,16 L20.0027785,16 C17.7898769,16 16,17.792105 16,20.0027785 L16,58.312373 L25.2413115,43.7197989 C28.041793,39.297674 34.2643908,38.7118128 37.8410347,42.5335275 L56.0882845,63.1470817 L69.7748997,56.7400579 C72.766567,55.3552503 76.3013751,55.9473836 78.678437,58.2315339 C78.8106437,58.3585731 79.0742301,58.609836 79.4527088,58.9673596 C80.0910923,59.570398 80.8117772,60.2441563 81.598127,60.9705595 C83.8422198,63.043576 86.1541548,65.1151944 88.3956721,67.0372264 C89.1168795,67.6556396 89.8200801,68.2492007 90.5021258,68.8146755 C92.6097224,70.5620551 94.4693308,72.0029474 95.9836366,73.0515697 C96.7316295,73.5695379 97.3674038,73.9719282 98.0281481,74.3824999 C98.4724987,74.4989557 99.0742374,74.5263881 99.8365134,74.4317984 C101.709944,74.1993272 104.074502,73.2878514 106.559886,71.8846196 C107.705822,71.2376318 108.790494,70.5370325 109.764561,69.8410487 C110.323259,69.4418522 110.694168,69.1550757 110.834827,69.0391868 C111.210545,68.7296319 111.600264,68.4615815 112,68.2332211 L112,68.2332211 Z M0,8.00697327 C0,3.58484404 3.59075293,0 8.00697327,0 L119.993027,0 C124.415156,0 128,3.59075293 128,8.00697327 L128,119.993027 C128,124.415156 124.409247,128 119.993027,128 L8.00697327,128 C3.58484404,128 0,124.409247 0,119.993027 L0,8.00697327 L0,8.00697327 Z M95,42 C99.418278,42 103,38.418278 103,34 C103,29.581722 99.418278,26 95,26 C90.581722,26 87,29.581722 87,34 C87,38.418278 90.581722,42 95,42 L95,42 Z M32,76 C47.8587691,80.8294182 52.0345556,83.2438712 52.0345556,88 C52.0345556,92.7561288 32,95.4712486 32,102.347107 C32,109.222965 33.2849191,107.337637 33.2849191,112 L67.999999,112 C67.999999,112 54.3147136,105.375255 54.3147136,101.200691 C54.3147136,93.535181 64.9302432,92.860755 64.9302432,88 C64.9302432,80.6425555 50.8523779,79.167282 32,76 L32,76 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/plugin-generic-language": {
            "title": "$:/core/images/plugin-generic-language",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M61.2072232,68.1369825 C56.8829239,70.9319564 54.2082892,74.793177 54.2082892,79.0581634 C54.2082892,86.9638335 63.3980995,93.4821994 75.2498076,94.3940006 C77.412197,98.2964184 83.8475284,101.178858 91.5684735,101.403106 C86.4420125,100.27851 82.4506393,97.6624107 80.9477167,94.3948272 C92.8046245,93.4861461 102,86.9662269 102,79.0581634 C102,70.5281905 91.3014611,63.6132813 78.1041446,63.6132813 C71.5054863,63.6132813 65.5315225,65.3420086 61.2072232,68.1369825 Z M74.001066,53.9793443 C69.6767667,56.7743182 63.7028029,58.5030456 57.1041446,58.5030456 C54.4851745,58.5030456 51.9646095,58.2307276 49.6065315,57.7275105 C46.2945155,59.9778212 41.2235699,61.4171743 35.5395922,61.4171743 C35.4545771,61.4171743 35.3696991,61.4168523 35.2849622,61.4162104 C39.404008,60.5235193 42.7961717,58.6691298 44.7630507,56.286533 C37.8379411,53.5817651 33.2082892,48.669413 33.2082892,43.0581634 C33.2082892,34.5281905 43.9068281,27.6132812 57.1041446,27.6132812 C70.3014611,27.6132812 81,34.5281905 81,43.0581634 C81,47.3231498 78.3253653,51.1843704 74.001066,53.9793443 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/plugin-generic-plugin": {
            "title": "$:/core/images/plugin-generic-plugin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M40.3972881,76.4456988 L40.3972881,95.3404069 L54.5170166,95.3404069 L54.5170166,95.3404069 C54.5165526,95.3385183 54.516089,95.3366295 54.515626,95.3347404 C54.6093153,95.3385061 54.7034848,95.3404069 54.7980982,95.3404069 C58.6157051,95.3404069 61.710487,92.245625 61.710487,88.4280181 C61.710487,86.6197822 61.01617,84.9737128 59.8795929,83.7418666 L59.8795929,83.7418666 C59.8949905,83.7341665 59.9104102,83.7265043 59.925852,83.7188798 C58.8840576,82.5086663 58.2542926,80.9336277 58.2542926,79.2114996 C58.2542926,75.3938927 61.3490745,72.2991108 65.1666814,72.2991108 C68.9842884,72.2991108 72.0790703,75.3938927 72.0790703,79.2114996 C72.0790703,81.1954221 71.2432806,82.9841354 69.9045961,84.2447446 L69.9045961,84.2447446 C69.9333407,84.2629251 69.9619885,84.281245 69.9905383,84.2997032 L69.9905383,84.2997032 C69.1314315,85.4516923 68.6228758,86.8804654 68.6228758,88.4280181 C68.6228758,91.8584969 71.1218232,94.7053153 74.3986526,95.2474079 C74.3913315,95.2784624 74.3838688,95.3094624 74.3762652,95.3404069 L95.6963988,95.3404069 L95.6963988,75.5678578 L95.6963988,75.5678578 C95.6466539,75.5808558 95.5967614,75.5934886 95.5467242,75.6057531 C95.5504899,75.5120637 95.5523907,75.4178943 95.5523907,75.3232809 C95.5523907,71.505674 92.4576088,68.4108921 88.6400019,68.4108921 C86.831766,68.4108921 85.1856966,69.105209 83.9538504,70.2417862 L83.9538504,70.2417862 C83.9461503,70.2263886 83.938488,70.2109688 83.9308636,70.1955271 C82.7206501,71.2373215 81.1456115,71.8670865 79.4234834,71.8670865 C75.6058765,71.8670865 72.5110946,68.7723046 72.5110946,64.9546976 C72.5110946,61.1370907 75.6058765,58.0423088 79.4234834,58.0423088 C81.4074059,58.0423088 83.1961192,58.8780985 84.4567284,60.2167829 L84.4567284,60.2167829 C84.4749089,60.1880383 84.4932288,60.1593906 84.511687,60.1308407 L84.511687,60.1308407 C85.6636761,60.9899475 87.0924492,61.4985032 88.6400019,61.4985032 C92.0704807,61.4985032 94.9172991,58.9995558 95.4593917,55.7227265 C95.538755,55.7414363 95.6177614,55.761071 95.6963988,55.7816184 L95.6963988,40.0412962 L74.3762652,40.0412962 L74.3762652,40.0412962 C74.3838688,40.0103516 74.3913315,39.9793517 74.3986526,39.9482971 L74.3986526,39.9482971 C71.1218232,39.4062046 68.6228758,36.5593862 68.6228758,33.1289073 C68.6228758,31.5813547 69.1314315,30.1525815 69.9905383,29.0005925 C69.9619885,28.9821342 69.9333407,28.9638143 69.9045961,28.9456339 C71.2432806,27.6850247 72.0790703,25.8963113 72.0790703,23.9123888 C72.0790703,20.0947819 68.9842884,17 65.1666814,17 C61.3490745,17 58.2542926,20.0947819 58.2542926,23.9123888 C58.2542926,25.6345169 58.8840576,27.2095556 59.925852,28.419769 L59.925852,28.419769 C59.9104102,28.4273935 59.8949905,28.4350558 59.8795929,28.4427558 C61.01617,29.674602 61.710487,31.3206715 61.710487,33.1289073 C61.710487,36.9465143 58.6157051,40.0412962 54.7980982,40.0412962 C54.7034848,40.0412962 54.6093153,40.0393953 54.515626,40.0356296 L54.515626,40.0356296 C54.516089,40.0375187 54.5165526,40.0394075 54.5170166,40.0412962 L40.3972881,40.0412962 L40.3972881,52.887664 L40.3972881,52.887664 C40.4916889,53.3430132 40.5412962,53.8147625 40.5412962,54.2980982 C40.5412962,58.1157051 37.4465143,61.210487 33.6289073,61.210487 C32.0813547,61.210487 30.6525815,60.7019313 29.5005925,59.8428245 C29.4821342,59.8713744 29.4638143,59.9000221 29.4456339,59.9287667 C28.1850247,58.5900823 26.3963113,57.7542926 24.4123888,57.7542926 C20.5947819,57.7542926 17.5,60.8490745 17.5,64.6666814 C17.5,68.4842884 20.5947819,71.5790703 24.4123888,71.5790703 C26.134517,71.5790703 27.7095556,70.9493053 28.919769,69.9075109 L28.919769,69.9075109 C28.9273935,69.9229526 28.9350558,69.9383724 28.9427558,69.95377 C30.174602,68.8171928 31.8206715,68.1228758 33.6289073,68.1228758 C37.4465143,68.1228758 40.5412962,71.2176578 40.5412962,75.0352647 C40.5412962,75.5186004 40.4916889,75.9903496 40.3972881,76.4456988 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/plugin-generic-theme": {
            "title": "$:/core/images/plugin-generic-theme",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M29.4078519,91.4716406 L51.4693474,69.4101451 L51.4646675,69.4054652 C50.5969502,68.5377479 50.5929779,67.1348725 51.4693474,66.2585029 C52.3396494,65.3882009 53.7499654,65.3874786 54.6163097,66.2538229 L64.0805963,75.7181095 C64.9483136,76.5858268 64.9522859,77.9887022 64.0759163,78.8650718 C63.2056143,79.7353737 61.7952984,79.736096 60.9289541,78.8697517 L60.9242741,78.8650718 L60.9242741,78.8650718 L38.8627786,100.926567 C36.2518727,103.537473 32.0187578,103.537473 29.4078519,100.926567 C26.796946,98.3156614 26.796946,94.0825465 29.4078519,91.4716406 Z M60.8017407,66.3810363 C58.3659178,63.6765806 56.3370667,61.2899536 54.9851735,59.5123615 C48.1295381,50.4979488 44.671561,55.2444054 40.7586738,59.5123614 C36.8457866,63.7803174 41.789473,67.2384487 38.0759896,70.2532832 C34.3625062,73.2681177 34.5917646,74.3131575 28.3243876,68.7977024 C22.0570105,63.2822473 21.6235306,61.7636888 24.5005999,58.6166112 C27.3776691,55.4695337 29.7823103,60.4247912 35.6595047,54.8320442 C41.5366991,49.2392972 36.5996215,44.2825646 36.5996215,44.2825646 C36.5996215,44.2825646 48.8365511,19.267683 65.1880231,21.1152173 C81.5394952,22.9627517 59.0022276,18.7228947 53.3962199,38.3410355 C50.9960082,46.7405407 53.8429162,44.7613399 58.3941742,48.3090467 C59.7875202,49.3951602 64.4244828,52.7100463 70.1884353,56.9943417 L90.8648751,36.3179019 L92.4795866,31.5515482 L100.319802,26.8629752 L103.471444,30.0146174 L98.782871,37.8548326 L94.0165173,39.4695441 L73.7934912,59.6925702 C86.4558549,69.2403631 102.104532,81.8392557 102.104532,86.4016913 C102.104533,93.6189834 99.0337832,97.9277545 92.5695848,95.5655717 C87.8765989,93.8506351 73.8015497,80.3744087 63.8173444,69.668717 L60.9242741,72.5617873 L57.7726319,69.4101451 L60.8017407,66.3810363 L60.8017407,66.3810363 Z M63.9533761,1.42108547e-13 L118.512977,32 L118.512977,96 L63.9533761,128 L9.39377563,96 L9.39377563,32 L63.9533761,1.42108547e-13 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/preview-closed": {
            "title": "$:/core/images/preview-closed",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-preview-closed tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M0.0881363238,64 C-0.210292223,65.8846266 0.249135869,67.8634737 1.4664206,69.4579969 C16.2465319,88.8184886 39.1692554,100.414336 64,100.414336 C88.8307446,100.414336 111.753468,88.8184886 126.533579,69.4579969 C127.750864,67.8634737 128.210292,65.8846266 127.911864,64 C110.582357,78.4158332 88.3036732,87.0858436 64,87.0858436 C39.6963268,87.0858436 17.4176431,78.4158332 0.0881363238,64 Z\"></path>\n        <rect x=\"62\" y=\"96\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(80.000000, 101.000000) rotate(-5.000000) translate(-80.000000, -101.000000) \" x=\"78\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(48.000000, 101.000000) rotate(-355.000000) translate(-48.000000, -101.000000) \" x=\"46\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(32.000000, 96.000000) rotate(-350.000000) translate(-32.000000, -96.000000) \" x=\"30\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(96.000000, 96.000000) rotate(-10.000000) translate(-96.000000, -96.000000) \" x=\"94\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(112.000000, 88.000000) rotate(-20.000000) translate(-112.000000, -88.000000) \" x=\"110\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(16.000000, 88.000000) rotate(-340.000000) translate(-16.000000, -88.000000) \" x=\"14\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/preview-open": {
            "title": "$:/core/images/preview-open",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-preview-open tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64.1099282,99.5876785 C39.2791836,99.5876785 16.3564602,87.9918313 1.57634884,68.6313396 C-0.378878622,66.070184 -0.378878622,62.5174945 1.57634884,59.9563389 C16.3564602,40.5958472 39.2791836,29 64.1099282,29 C88.9406729,29 111.863396,40.5958472 126.643508,59.9563389 C128.598735,62.5174945 128.598735,66.070184 126.643508,68.6313396 C111.863396,87.9918313 88.9406729,99.5876785 64.1099282,99.5876785 Z M110.213805,67.5808331 C111.654168,66.0569335 111.654168,63.9430665 110.213805,62.4191669 C99.3257042,50.8995835 82.4391647,44 64.1470385,44 C45.8549124,44 28.9683729,50.8995835 18.0802717,62.4191669 C16.6399094,63.9430665 16.6399094,66.0569335 18.0802717,67.5808331 C28.9683729,79.1004165 45.8549124,86 64.1470385,86 C82.4391647,86 99.3257042,79.1004165 110.213805,67.5808331 Z\"></path>\n        <path d=\"M63.5,88 C76.4786916,88 87,77.4786916 87,64.5 C87,51.5213084 76.4786916,41 63.5,41 C50.5213084,41 40,51.5213084 40,64.5 C40,77.4786916 50.5213084,88 63.5,88 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/print-button": {
            "title": "$:/core/images/print-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M112,71 L112,30.5 L111.96811,30.5 L111.96811,30.5 C111.932942,28.4998414 111.151676,26.510538 109.625176,24.9840387 L86.9982489,2.35711116 C85.3482153,0.707077645 83.1589869,-0.071534047 81,0.0201838424 L81,0 L23.9992458,0 C19.5808867,0 16,3.58213437 16,8.00092105 L16,71 L24,71 L24,8 L81,8 L81,22.4996539 C81,26.9216269 84.5818769,30.5 89.0003461,30.5 L104,30.5 L104,71 L112,71 Z\"></path>\n        <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n        <path d=\"M0,80.0054195 C0,71.1658704 7.15611005,64 16.0008841,64 L111.999116,64 C120.83616,64 128,71.1553215 128,80.0054195 L128,111.99458 C128,120.83413 120.84389,128 111.999116,128 L16.0008841,128 C7.16383982,128 0,120.844679 0,111.99458 L0,80.0054195 Z M104,96 C108.418278,96 112,92.418278 112,88 C112,83.581722 108.418278,80 104,80 C99.581722,80 96,83.581722 96,88 C96,92.418278 99.581722,96 104,96 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/quote": {
            "title": "$:/core/images/quote",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-quote tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M51.2188077,117.712501 L51.2188077,62.1993386 L27.4274524,62.1993386 C27.4274524,53.3075754 29.1096526,45.797753 32.4741035,39.669646 C35.8385544,33.541539 42.0867267,28.9154883 51.2188077,25.7913554 L51.2188077,2 C43.7689521,2.96127169 36.8599155,5.18417913 30.4914905,8.668789 C24.1230656,12.1533989 18.6559149,16.5391352 14.0898743,21.8261295 C9.52383382,27.1131238 5.97919764,33.2411389 3.45585945,40.2103586 C0.932521268,47.1795784 -0.208971741,54.6293222 0.0313461819,62.5598136 L0.0313461819,117.712501 L51.2188077,117.712501 Z M128,117.712501 L128,62.1993386 L104.208645,62.1993386 C104.208645,53.3075754 105.890845,45.797753 109.255296,39.669646 C112.619747,33.541539 118.867919,28.9154883 128,25.7913554 L128,2 C120.550144,2.96127169 113.641108,5.18417913 107.272683,8.668789 C100.904258,12.1533989 95.4371072,16.5391352 90.8710666,21.8261295 C86.3050261,27.1131238 82.7603899,33.2411389 80.2370517,40.2103586 C77.7137136,47.1795784 76.5722206,54.6293222 76.8125385,62.5598136 L76.8125385,117.712501 L128,117.712501 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/refresh-button": {
            "title": "$:/core/images/refresh-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-refresh-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M106.369002,39.4325143 C116.529932,60.3119371 112.939592,86.1974934 95.5979797,103.539105 C73.7286194,125.408466 38.2713806,125.408466 16.4020203,103.539105 C-5.46734008,81.6697449 -5.46734008,46.2125061 16.4020203,24.3431458 C19.5262146,21.2189514 24.5915344,21.2189514 27.7157288,24.3431458 C30.8399231,27.4673401 30.8399231,32.5326599 27.7157288,35.6568542 C12.0947571,51.2778259 12.0947571,76.6044251 27.7157288,92.2253967 C43.3367004,107.846368 68.6632996,107.846368 84.2842712,92.2253967 C97.71993,78.7897379 99.5995262,58.1740623 89.9230597,42.729491 L83.4844861,54.9932839 C81.4307001,58.9052072 76.5945372,60.4115251 72.682614,58.3577391 C68.7706907,56.3039532 67.2643728,51.4677903 69.3181587,47.555867 L84.4354914,18.7613158 C86.4966389,14.8353707 91.3577499,13.3347805 95.273202,15.415792 L124.145886,30.7612457 C128.047354,32.8348248 129.52915,37.6785572 127.455571,41.5800249 C125.381992,45.4814927 120.53826,46.9632892 116.636792,44.8897102 L106.369002,39.4325143 Z M98.1470904,27.0648707 C97.9798954,26.8741582 97.811187,26.6843098 97.6409651,26.4953413 L98.6018187,26.1987327 L98.1470904,27.0648707 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/right-arrow": {
            "title": "$:/core/images/right-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-right-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path d=\"M80.3563798,109.353315 C78.9238993,110.786918 76.9450203,111.675144 74.7592239,111.675144 L-4.40893546,111.675144 C-8.77412698,111.675144 -12.3248558,108.130732 -12.3248558,103.758478 C-12.3248558,99.3951199 -8.78077754,95.8418109 -4.40893546,95.8418109 L66.8418109,95.8418109 L66.8418109,24.5910645 C66.8418109,20.225873 70.3862233,16.6751442 74.7584775,16.6751442 C79.1218352,16.6751442 82.6751442,20.2192225 82.6751442,24.5910645 L82.6751442,103.759224 C82.6751442,105.941695 81.7891419,107.920575 80.3566508,109.353886 Z\" transform=\"translate(35.175144, 64.175144) rotate(-45.000000) translate(-35.175144, -64.175144) \"></path>\n</svg>"
        },
        "$:/core/images/save-button": {
            "title": "$:/core/images/save-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/size": {
            "title": "$:/core/images/size",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-size tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path d=\"M92.3431458,26 L83.1715729,35.1715729 C81.6094757,36.73367 81.6094757,39.26633 83.1715729,40.8284271 C84.73367,42.3905243 87.26633,42.3905243 88.8284271,40.8284271 L104.828427,24.8284271 C106.390524,23.26633 106.390524,20.73367 104.828427,19.1715729 L88.8284271,3.17157288 C87.26633,1.60947571 84.73367,1.60947571 83.1715729,3.17157288 C81.6094757,4.73367004 81.6094757,7.26632996 83.1715729,8.82842712 L92.3431457,18 L22,18 C19.790861,18 18,19.790861 18,22 L18,92.3431458 L8.82842712,83.1715729 C7.26632996,81.6094757 4.73367004,81.6094757 3.17157288,83.1715729 C1.60947571,84.73367 1.60947571,87.26633 3.17157288,88.8284271 L19.1715729,104.828427 C20.73367,106.390524 23.26633,106.390524 24.8284271,104.828427 L40.8284271,88.8284271 C42.3905243,87.26633 42.3905243,84.73367 40.8284271,83.1715729 C39.26633,81.6094757 36.73367,81.6094757 35.1715729,83.1715729 L26,92.3431458 L26,22 L22,26 L92.3431458,26 L92.3431458,26 Z M112,52 L112,116 L116,112 L52,112 C49.790861,112 48,113.790861 48,116 C48,118.209139 49.790861,120 52,120 L116,120 C118.209139,120 120,118.209139 120,116 L120,52 C120,49.790861 118.209139,48 116,48 C113.790861,48 112,49.790861 112,52 L112,52 Z\"></path>\n</svg>"
        },
        "$:/core/images/spiral": {
            "title": "$:/core/images/spiral",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-spiral tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"nonzero\">\n        <path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074.14-2.64-1.89-4.89-4.52-5.03-2.64-.14-4.89 1.88-5.03 4.52-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01-.02-.015-.054-.045-.094-.088-.06-.064-.12-.145-.17-.244-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/stamp": {
            "title": "$:/core/images/stamp",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-stamp tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M49.7334301,64 L16.0098166,64 C11.5838751,64 8,67.5829053 8,72.002643 L8,74.4986785 L8,97 L120,97 L120,74.4986785 L120,72.002643 C120,67.5737547 116.413883,64 111.990183,64 L78.2665699,64 C76.502049,60.7519149 75.5,57.0311962 75.5,53.0769231 C75.5,46.6017951 78.1869052,40.7529228 82.5087769,36.5800577 C85.3313113,32.7688808 87,28.0549983 87,22.952183 C87,10.2760423 76.7025492,0 64,0 C51.2974508,0 41,10.2760423 41,22.952183 C41,28.0549983 42.6686887,32.7688808 45.4912231,36.5800577 C49.8130948,40.7529228 52.5,46.6017951 52.5,53.0769231 C52.5,57.0311962 51.497951,60.7519149 49.7334301,64 Z M8,104 L120,104 L120,112 L8,112 L8,104 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/star-filled": {
            "title": "$:/core/images/star-filled",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-star-filled tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"nonzero\">\n        <path d=\"M61.8361286,96.8228569 L99.1627704,124.110219 C101.883827,126.099427 105.541968,123.420868 104.505636,120.198072 L90.2895569,75.9887263 L89.0292911,79.8977279 L126.314504,52.5528988 C129.032541,50.5595011 127.635256,46.2255025 124.273711,46.2229134 L78.1610486,46.1873965 L81.4604673,48.6032923 L67.1773543,4.41589688 C66.1361365,1.19470104 61.6144265,1.19470104 60.5732087,4.41589688 L46.2900957,48.6032923 L49.5895144,46.1873965 L3.47685231,46.2229134 C0.115307373,46.2255025 -1.28197785,50.5595011 1.43605908,52.5528988 L38.7212719,79.8977279 L37.4610061,75.9887263 L23.2449266,120.198072 C22.2085954,123.420868 25.8667356,126.099427 28.5877926,124.110219 L65.9144344,96.8228569 L61.8361286,96.8228569 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/storyview-classic": {
            "title": "$:/core/images/storyview-classic",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-storyview-classic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/storyview-pop": {
            "title": "$:/core/images/storyview-pop",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-storyview-pop tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M16.0098166,56 C11.586117,56 8,59.5776607 8,63.9924054 L8,80.0075946 C8,84.4216782 11.5838751,88 16.0098166,88 L111.990183,88 C116.413883,88 120,84.4223393 120,80.0075946 L120,63.9924054 C120,59.5783218 116.416125,56 111.990183,56 L16.0098166,56 L16.0098166,56 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/storyview-zoomin": {
            "title": "$:/core/images/storyview-zoomin",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-storyview-zoomin tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.578055 16,24.0085154 L16,71.9914846 C16,76.4144655 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.421945 112,71.9914846 L112,24.0085154 C112,19.5855345 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/strikethrough": {
            "title": "$:/core/images/strikethrough",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-strikethrough tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M92.793842,38.7255689 L108.215529,38.7255689 C107.987058,31.985687 106.70193,26.1883331 104.360107,21.3333333 C102.018284,16.4783336 98.8197436,12.4516001 94.7643909,9.25301205 C90.7090382,6.05442399 85.9969032,3.71263572 80.6278447,2.22757697 C75.2587862,0.742518233 69.4328739,0 63.1499331,0 C57.552404,0 52.0977508,0.713959839 46.7858099,2.14190094 C41.473869,3.56984203 36.7331757,5.74027995 32.5635877,8.65327979 C28.3939997,11.5662796 25.0526676,15.2788708 22.5394913,19.7911647 C20.026315,24.3034585 18.7697456,29.6438781 18.7697456,35.8125837 C18.7697456,41.4101128 19.883523,46.0651309 22.1111111,49.7777778 C24.3386992,53.4904246 27.3087722,56.5176144 31.021419,58.8594378 C34.7340659,61.2012612 38.9321497,63.0861151 43.6157965,64.5140562 C48.2994433,65.9419973 53.068695,67.1985666 57.9236948,68.2838019 C62.7786945,69.3690371 67.5479462,70.4256977 72.231593,71.4538153 C76.9152398,72.4819329 81.1133237,73.8241773 84.8259705,75.480589 C88.5386174,77.1370007 91.5086903,79.2788802 93.7362784,81.9062918 C95.9638666,84.5337035 97.0776439,87.9607107 97.0776439,92.1874163 C97.0776439,96.6425926 96.1637753,100.298067 94.3360107,103.153949 C92.5082461,106.009831 90.109341,108.265944 87.1392236,109.922356 C84.1691061,111.578768 80.827774,112.749662 77.1151272,113.435074 C73.4024803,114.120485 69.7184476,114.463186 66.0629183,114.463186 C61.4935068,114.463186 57.0383974,113.892018 52.6974565,112.749665 C48.3565156,111.607312 44.5582492,109.836692 41.3025435,107.437751 C38.0468378,105.03881 35.4194656,101.983062 33.4203481,98.270415 C31.4212305,94.5577681 30.4216867,90.1312171 30.4216867,84.9906292 L15,84.9906292 C15,92.4159229 16.3422445,98.8415614 19.0267738,104.267738 C21.711303,109.693914 25.3667774,114.149023 29.9933066,117.633199 C34.6198357,121.117376 39.9888137,123.71619 46.1004016,125.429719 C52.2119895,127.143248 58.6947448,128 65.5488621,128 C71.1463912,128 76.7723948,127.343157 82.4270415,126.029451 C88.0816882,124.715745 93.1936407,122.602424 97.7630522,119.689424 C102.332464,116.776425 106.073613,113.006717 108.986613,108.380187 C111.899613,103.753658 113.356091,98.1847715 113.356091,91.6733601 C113.356091,85.6188899 112.242314,80.5926126 110.014726,76.5943775 C107.787137,72.5961424 104.817065,69.2833688 101.104418,66.6559572 C97.3917708,64.0285455 93.193687,61.9437828 88.5100402,60.4016064 C83.8263934,58.85943 79.0571416,57.5171855 74.2021419,56.3748327 C69.3471422,55.2324798 64.5778904,54.1758192 59.8942436,53.2048193 C55.2105968,52.2338193 51.012513,51.0058084 47.2998661,49.5207497 C43.5872193,48.0356909 40.6171463,46.1222786 38.3895582,43.7804552 C36.1619701,41.4386318 35.0481928,38.3828836 35.0481928,34.6131191 C35.0481928,30.6148841 35.8192694,27.273552 37.3614458,24.5890228 C38.9036222,21.9044935 40.9598265,19.762614 43.5301205,18.1633199 C46.1004145,16.5640259 49.041929,15.4216902 52.3547523,14.7362784 C55.6675757,14.0508667 59.0374661,13.708166 62.4645248,13.708166 C70.9179361,13.708166 77.8576257,15.6786952 83.2838019,19.6198126 C88.709978,23.56093 91.8799597,29.9294518 92.793842,38.7255689 L92.793842,38.7255689 Z\"></path>\n        <rect x=\"5\" y=\"54\" width=\"118\" height=\"16\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/subscript": {
            "title": "$:/core/images/subscript",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-subscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,128.411516 L85.3276227,128.411516 C85.3870139,123.24448 86.6342108,118.730815 89.0692508,114.870386 C91.5042907,111.009956 94.8301491,107.654403 99.0469256,104.803624 C101.066227,103.318844 103.174584,101.878629 105.372059,100.482935 C107.569534,99.0872413 109.588805,97.5876355 111.429933,95.9840726 C113.271061,94.3805097 114.785514,92.6433426 115.973338,90.7725192 C117.161163,88.9016958 117.784761,86.7487964 117.844152,84.3137564 C117.844152,83.1853233 117.710524,81.9826691 117.443264,80.7057579 C117.176003,79.4288467 116.656338,78.2410402 115.884252,77.1423026 C115.112166,76.0435651 114.04314,75.123015 112.677142,74.3806248 C111.311144,73.6382345 109.529434,73.267045 107.331959,73.267045 C105.312658,73.267045 103.634881,73.6679297 102.298579,74.4697112 C100.962276,75.2714926 99.8932503,76.3702137 99.0914688,77.7659073 C98.2896874,79.161601 97.6957841,80.8096826 97.3097412,82.7102016 C96.9236982,84.6107206 96.7009845,86.6596869 96.6415933,88.857162 L86.4857457,88.857162 C86.4857457,85.4124713 86.9460207,82.2202411 87.8665846,79.2803758 C88.7871485,76.3405105 90.1679736,73.801574 92.0091014,71.6634901 C93.8502292,69.5254062 96.092214,67.8476295 98.7351233,66.6301095 C101.378033,65.4125895 104.451482,64.8038386 107.955564,64.8038386 C111.756602,64.8038386 114.933984,65.4274371 117.487807,66.6746527 C120.041629,67.9218683 122.105443,69.4957119 123.67931,71.3962309 C125.253178,73.2967499 126.366746,75.3605638 127.02005,77.5877345 C127.673353,79.8149053 128,81.9381095 128,83.9574109 C128,86.4518421 127.613963,88.7086746 126.841877,90.727976 C126.069791,92.7472774 125.03046,94.6032252 123.723854,96.2958749 C122.417247,97.9885247 120.932489,99.5475208 119.269534,100.97291 C117.60658,102.398299 115.884261,103.734582 114.102524,104.981797 C112.320788,106.229013 110.539078,107.416819 108.757341,108.545253 C106.975605,109.673686 105.327523,110.802102 103.813047,111.930535 C102.298571,113.058968 100.977136,114.231927 99.8487031,115.449447 C98.7202699,116.666967 97.9481956,117.958707 97.5324571,119.324705 L127.910914,119.324705 L127.910914,128.411516 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/superscript": {
            "title": "$:/core/images/superscript",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-superscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,63.4115159 L85.3276227,63.4115159 C85.3870139,58.2444799 86.6342108,53.7308149 89.0692508,49.8703857 C91.5042907,46.0099565 94.8301491,42.654403 99.0469256,39.8036245 C101.066227,38.318844 103.174584,36.8786285 105.372059,35.4829349 C107.569534,34.0872413 109.588805,32.5876355 111.429933,30.9840726 C113.271061,29.3805097 114.785514,27.6433426 115.973338,25.7725192 C117.161163,23.9016958 117.784761,21.7487964 117.844152,19.3137564 C117.844152,18.1853233 117.710524,16.9826691 117.443264,15.7057579 C117.176003,14.4288467 116.656338,13.2410402 115.884252,12.1423026 C115.112166,11.0435651 114.04314,10.123015 112.677142,9.38062477 C111.311144,8.63823453 109.529434,8.26704499 107.331959,8.26704499 C105.312658,8.26704499 103.634881,8.6679297 102.298579,9.46971115 C100.962276,10.2714926 99.8932503,11.3702137 99.0914688,12.7659073 C98.2896874,14.161601 97.6957841,15.8096826 97.3097412,17.7102016 C96.9236982,19.6107206 96.7009845,21.6596869 96.6415933,23.857162 L86.4857457,23.857162 C86.4857457,20.4124713 86.9460207,17.2202411 87.8665846,14.2803758 C88.7871485,11.3405105 90.1679736,8.80157397 92.0091014,6.6634901 C93.8502292,4.52540622 96.092214,2.84762946 98.7351233,1.63010947 C101.378033,0.412589489 104.451482,-0.196161372 107.955564,-0.196161372 C111.756602,-0.196161372 114.933984,0.427437071 117.487807,1.67465266 C120.041629,2.92186826 122.105443,4.49571195 123.67931,6.39623095 C125.253178,8.29674995 126.366746,10.3605638 127.02005,12.5877345 C127.673353,14.8149053 128,16.9381095 128,18.9574109 C128,21.4518421 127.613963,23.7086746 126.841877,25.727976 C126.069791,27.7472774 125.03046,29.6032252 123.723854,31.2958749 C122.417247,32.9885247 120.932489,34.5475208 119.269534,35.97291 C117.60658,37.3982993 115.884261,38.7345816 114.102524,39.9817972 C112.320788,41.2290128 110.539078,42.4168194 108.757341,43.5452525 C106.975605,44.6736857 105.327523,45.8021019 103.813047,46.9305351 C102.298571,48.0589682 100.977136,49.2319272 99.8487031,50.4494472 C98.7202699,51.6669672 97.9481956,52.9587068 97.5324571,54.3247048 L127.910914,54.3247048 L127.910914,63.4115159 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/tag-button": {
            "title": "$:/core/images/tag-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-tag-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M18.1643182,47.6600756 L18.1677196,51.7651887 C18.1708869,55.5878829 20.3581578,60.8623899 23.0531352,63.5573673 L84.9021823,125.406414 C87.5996731,128.103905 91.971139,128.096834 94.6717387,125.396234 L125.766905,94.3010679 C128.473612,91.5943612 128.472063,87.2264889 125.777085,84.5315115 L63.9280381,22.6824644 C61.2305472,19.9849735 55.9517395,17.801995 52.1318769,17.8010313 L25.0560441,17.7942007 C21.2311475,17.7932358 18.1421354,20.8872832 18.1452985,24.7049463 L18.1535504,34.6641936 C18.2481119,34.6754562 18.3439134,34.6864294 18.4409623,34.6971263 C22.1702157,35.1081705 26.9295004,34.6530132 31.806204,33.5444844 C32.1342781,33.0700515 32.5094815,32.6184036 32.9318197,32.1960654 C35.6385117,29.4893734 39.5490441,28.718649 42.94592,29.8824694 C43.0432142,29.8394357 43.1402334,29.7961748 43.2369683,29.7526887 L43.3646982,30.0368244 C44.566601,30.5115916 45.6933052,31.2351533 46.6655958,32.2074439 C50.4612154,36.0030635 50.4663097,42.1518845 46.6769742,45.94122 C43.0594074,49.5587868 37.2914155,49.7181264 33.4734256,46.422636 C28.1082519,47.5454734 22.7987486,48.0186448 18.1643182,47.6600756 Z\"></path>\n        <path d=\"M47.6333528,39.5324628 L47.6562932,39.5834939 C37.9670934,43.9391617 26.0718874,46.3819521 17.260095,45.4107025 C5.27267473,44.0894301 -1.02778744,36.4307276 2.44271359,24.0779512 C5.56175386,12.9761516 14.3014034,4.36129832 24.0466405,1.54817001 C34.7269254,-1.53487574 43.7955833,3.51606438 43.7955834,14.7730751 L35.1728168,14.7730752 C35.1728167,9.91428944 32.0946059,8.19982862 26.4381034,9.83267419 C19.5270911,11.8276553 13.046247,18.2159574 10.7440788,26.4102121 C8.82861123,33.2280582 11.161186,36.0634845 18.2047888,36.8398415 C25.3302805,37.6252244 35.7353482,35.4884477 44.1208333,31.7188498 L44.1475077,31.7781871 C44.159701,31.7725635 44.1718402,31.7671479 44.1839238,31.7619434 C45.9448098,31.0035157 50.4503245,38.3109156 47.7081571,39.5012767 C47.6834429,39.512005 47.6585061,39.5223987 47.6333528,39.5324628 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/theme-button": {
            "title": "$:/core/images/theme-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-theme-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M55.854113,66.9453198 C54.3299482,65.1432292 53.0133883,63.518995 51.9542746,62.1263761 C40.8899947,47.578055 35.3091807,55.2383404 28.9941893,62.1263758 C22.6791979,69.0144112 30.6577916,74.5954741 24.6646171,79.4611023 C18.6714426,84.3267304 19.0414417,86.0133155 8.92654943,77.1119468 C-1.18834284,68.2105781 -1.88793412,65.7597832 2.7553553,60.6807286 C7.39864472,55.601674 11.2794845,63.5989423 20.7646627,54.5728325 C30.2498409,45.5467226 22.2819131,37.5470737 22.2819131,37.5470737 C22.2819131,37.5470737 42.0310399,-2.82433362 68.4206088,0.157393922 C94.8101776,3.13912147 58.4373806,-3.70356506 49.3898693,27.958066 C45.5161782,41.5139906 50.1107906,38.3197672 57.4560458,44.0453955 C59.1625767,45.3756367 63.8839488,48.777453 70.127165,53.3625321 C63.9980513,59.2416709 58.9704753,64.0315459 55.854113,66.9453198 Z M67.4952439,79.8919946 C83.5082212,96.9282402 105.237121,117.617674 112.611591,120.312493 C123.044132,124.12481 128.000001,117.170903 128,105.522947 C127.999999,98.3705516 104.170675,78.980486 84.0760493,63.7529565 C76.6683337,70.9090328 70.7000957,76.7055226 67.4952439,79.8919946 Z\"></path>\n        <path d=\"M58.2852966,138.232794 L58.2852966,88.3943645 C56.318874,88.3923153 54.7254089,86.7952906 54.7254089,84.8344788 C54.7254089,82.8684071 56.3175932,81.2745911 58.2890859,81.2745911 L79.6408336,81.2745911 C81.608998,81.2745911 83.2045105,82.8724076 83.2045105,84.8344788 C83.2045105,86.7992907 81.614366,88.3923238 79.6446228,88.3943645 L79.6446228,88.3943646 L79.6446228,138.232794 C79.6446228,144.131009 74.8631748,148.912457 68.9649597,148.912457 C63.0667446,148.912457 58.2852966,144.131009 58.2852966,138.232794 Z M65.405072,-14.8423767 L72.5248474,-14.8423767 L76.0847351,-0.690681892 L72.5248474,6.51694947 L72.5248474,81.2745911 L65.405072,81.2745911 L65.405072,6.51694947 L61.8451843,-0.690681892 L65.405072,-14.8423767 Z\" transform=\"translate(68.964960, 67.035040) rotate(45.000000) translate(-68.964960, -67.035040) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/timestamp-off": {
            "title": "$:/core/images/timestamp-off",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-timestamp-off tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/>\n    </g>\n</svg>\n"
        },
        "$:/core/images/timestamp-on": {
            "title": "$:/core/images/timestamp-on",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-timestamp-on tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178c-2.116 1.775-5.27 1.498-7.045-.613-1.772-2.11-1.498-5.27.616-7.047l9.95-8.348c2.115-1.774 5.27-1.5 7.045.618 1.775 2.108 1.498 5.27-.616 7.043l-9.95 8.348zM102.983 27.178c2.116 1.775 5.27 1.498 7.045-.613 1.772-2.11 1.498-5.27-.616-7.047l-9.95-8.348c-2.114-1.774-5.27-1.5-7.044.618-1.775 2.108-1.498 5.27.616 7.043l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/>\n    </g>\n</svg>\n"
        },
        "$:/core/images/tip": {
            "title": "$:/core/images/tip",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-tip tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64,128.241818 C99.346224,128.241818 128,99.5880417 128,64.2418177 C128,28.8955937 99.346224,0.241817675 64,0.241817675 C28.653776,0.241817675 0,28.8955937 0,64.2418177 C0,99.5880417 28.653776,128.241818 64,128.241818 Z M75.9358659,91.4531941 C75.3115438,95.581915 70.2059206,98.8016748 64,98.8016748 C57.7940794,98.8016748 52.6884562,95.581915 52.0641341,91.4531941 C54.3299053,94.0502127 58.8248941,95.8192805 64,95.8192805 C69.1751059,95.8192805 73.6700947,94.0502127 75.9358659,91.4531941 L75.9358659,91.4531941 Z M75.9358659,95.9453413 C75.3115438,100.074062 70.2059206,103.293822 64,103.293822 C57.7940794,103.293822 52.6884562,100.074062 52.0641341,95.9453413 C54.3299053,98.5423599 58.8248941,100.311428 64,100.311428 C69.1751059,100.311428 73.6700947,98.5423599 75.9358659,95.9453413 L75.9358659,95.9453413 Z M75.9358659,100.40119 C75.3115438,104.529911 70.2059206,107.74967 64,107.74967 C57.7940794,107.74967 52.6884562,104.529911 52.0641341,100.40119 C54.3299053,102.998208 58.8248941,104.767276 64,104.767276 C69.1751059,104.767276 73.6700947,102.998208 75.9358659,100.40119 L75.9358659,100.40119 Z M75.9358659,104.893337 C75.3115438,109.022058 70.2059206,112.241818 64,112.241818 C57.7940794,112.241818 52.6884562,109.022058 52.0641341,104.893337 C54.3299053,107.490356 58.8248941,109.259423 64,109.259423 C69.1751059,109.259423 73.6700947,107.490356 75.9358659,104.893337 L75.9358659,104.893337 Z M64.3010456,24.2418177 C75.9193117,24.2418188 88.0000013,32.0619847 88,48.4419659 C87.9999987,64.8219472 75.9193018,71.7540963 75.9193021,83.5755932 C75.9193022,89.4486648 70.0521957,92.8368862 63.9999994,92.8368862 C57.947803,92.8368862 51.9731007,89.8295115 51.9731007,83.5755932 C51.9731007,71.1469799 39.9999998,65.4700602 40,48.4419647 C40.0000002,31.4138691 52.6827796,24.2418166 64.3010456,24.2418177 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/twitter": {
            "title": "$:/core/images/twitter",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-twitter tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M41.6263422,115.803477 C27.0279663,115.803477 13.4398394,111.540813 1.99987456,104.234833 C4.02221627,104.472643 6.08004574,104.594302 8.16644978,104.594302 C20.277456,104.594302 31.4238403,100.47763 40.270894,93.5715185 C28.9590538,93.3635501 19.4123842,85.9189246 16.1230832,75.6885328 C17.7011365,75.9892376 19.320669,76.1503787 20.9862896,76.1503787 C23.344152,76.1503787 25.6278127,75.8359011 27.7971751,75.247346 C15.9709927,72.8821073 7.06079851,62.4745062 7.06079851,49.9982394 C7.06079851,49.8898938 7.06079851,49.7820074 7.06264203,49.67458 C10.5482779,51.6032228 14.5339687,52.7615103 18.7717609,52.8951059 C11.8355159,48.277565 7.2714207,40.3958845 7.2714207,31.4624258 C7.2714207,26.7434257 8.54621495,22.3200804 10.7713439,18.5169676 C23.5211299,34.0957738 42.568842,44.3472839 64.0532269,45.4210985 C63.6126256,43.5365285 63.3835682,41.5711584 63.3835682,39.5529928 C63.3835682,25.3326379 74.95811,13.8034766 89.2347917,13.8034766 C96.6697089,13.8034766 103.387958,16.930807 108.103682,21.9353619 C113.991886,20.780288 119.52429,18.6372496 124.518847,15.6866694 C122.588682,21.6993889 118.490075,26.7457211 113.152623,29.9327334 C118.381769,29.3102055 123.363882,27.926045 127.999875,25.8780385 C124.534056,31.0418981 120.151087,35.5772616 115.100763,39.2077561 C115.150538,40.3118708 115.175426,41.4224128 115.175426,42.538923 C115.175426,76.5663154 89.1744164,115.803477 41.6263422,115.803477\"></path>\n    </g>\n</svg>\n"
        },
        "$:/core/images/underline": {
            "title": "$:/core/images/underline",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-underline tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M7,117.421488 L121.247934,117.421488 L121.247934,128 L7,128 L7,117.421488 Z M104.871212,98.8958333 L104.871212,0 L88.6117424,0 L88.6117424,55.8560606 C88.6117424,60.3194668 88.0060035,64.432115 86.7945076,68.1941288 C85.5830116,71.9561425 83.7657949,75.239885 81.342803,78.0454545 C78.9198111,80.8510241 75.8911167,83.0189317 72.2566288,84.5492424 C68.6221409,86.0795531 64.3182067,86.844697 59.344697,86.844697 C53.0959284,86.844697 48.1862552,85.0593613 44.6155303,81.4886364 C41.0448054,77.9179114 39.2594697,73.0720003 39.2594697,66.9507576 L39.2594697,0 L23,0 L23,65.0378788 C23,70.3939662 23.5419769,75.2717583 24.625947,79.6714015 C25.709917,84.0710447 27.5908957,87.864883 30.2689394,91.0530303 C32.9469831,94.2411776 36.4538925,96.6960141 40.7897727,98.4176136 C45.125653,100.139213 50.545422,101 57.0492424,101 C64.3182182,101 70.630655,99.5653553 75.9867424,96.6960227 C81.3428298,93.8266902 85.742407,89.33147 89.1856061,83.2102273 L89.5681818,83.2102273 L89.5681818,98.8958333 L104.871212,98.8958333 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/unfold-all-button": {
            "title": "$:/core/images/unfold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-unfold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M85.598226,8.34884273 C84.1490432,6.89863875 82.1463102,6 79.9340286,6 L47.9482224,6 C43.5292967,6 39.9411255,9.581722 39.9411255,14 C39.9411255,18.4092877 43.5260249,22 47.9482224,22 L71.9411255,22 L71.9411255,45.9929031 C71.9411255,50.4118288 75.5228475,54 79.9411255,54 C84.3504132,54 87.9411255,50.4151006 87.9411255,45.9929031 L87.9411255,14.0070969 C87.9411255,11.7964515 87.0447363,9.79371715 85.5956548,8.34412458 Z\" transform=\"translate(63.941125, 30.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -30.000000) \"></path>\n        <path d=\"M85.6571005,72.2899682 C84.2079177,70.8397642 82.2051847,69.9411255 79.9929031,69.9411255 L48.0070969,69.9411255 C43.5881712,69.9411255 40,73.5228475 40,77.9411255 C40,82.3504132 43.5848994,85.9411255 48.0070969,85.9411255 L72,85.9411255 L72,109.934029 C72,114.352954 75.581722,117.941125 80,117.941125 C84.4092877,117.941125 88,114.356226 88,109.934029 L88,77.9482224 C88,75.737577 87.1036108,73.7348426 85.6545293,72.2852501 Z\" transform=\"translate(64.000000, 93.941125) scale(1, -1) rotate(-45.000000) translate(-64.000000, -93.941125) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/unfold-button": {
            "title": "$:/core/images/unfold-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-unfold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M85.598226,11.3488427 C84.1490432,9.89863875 82.1463102,9 79.9340286,9 L47.9482224,9 C43.5292967,9 39.9411255,12.581722 39.9411255,17 C39.9411255,21.4092877 43.5260249,25 47.9482224,25 L71.9411255,25 L71.9411255,48.9929031 C71.9411255,53.4118288 75.5228475,57 79.9411255,57 C84.3504132,57 87.9411255,53.4151006 87.9411255,48.9929031 L87.9411255,17.0070969 C87.9411255,14.7964515 87.0447363,12.7937171 85.5956548,11.3441246 Z\" transform=\"translate(63.941125, 33.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -33.000000) \"></path>\n        <path d=\"M85.6571005,53.4077172 C84.2079177,51.9575133 82.2051847,51.0588745 79.9929031,51.0588745 L48.0070969,51.0588745 C43.5881712,51.0588745 40,54.6405965 40,59.0588745 C40,63.4681622 43.5848994,67.0588745 48.0070969,67.0588745 L72,67.0588745 L72,91.0517776 C72,95.4707033 75.581722,99.0588745 80,99.0588745 C84.4092877,99.0588745 88,95.4739751 88,91.0517776 L88,59.0659714 C88,56.855326 87.1036108,54.8525917 85.6545293,53.4029991 Z\" transform=\"translate(64.000000, 75.058875) scale(1, -1) rotate(-45.000000) translate(-64.000000, -75.058875) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/unlocked-padlock": {
            "title": "$:/core/images/unlocked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-unlocked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M48.6266053,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L30.136303,64 C19.6806213,51.3490406 2.77158986,28.2115132 25.8366966,8.85759246 C50.4723026,-11.8141335 71.6711028,13.2108337 81.613302,25.0594855 C91.5555012,36.9081373 78.9368488,47.4964439 69.1559674,34.9513593 C59.375086,22.4062748 47.9893192,10.8049522 35.9485154,20.9083862 C23.9077117,31.0118202 34.192312,43.2685325 44.7624679,55.8655518 C47.229397,58.805523 48.403443,61.5979188 48.6266053,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/up-arrow": {
            "created": "20150316000544368",
            "modified": "20150316000831867",
            "tags": "$:/tags/Image",
            "title": "$:/core/images/up-arrow",
            "text": "<svg class=\"tc-image-up-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n<path transform=\"rotate(-135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25074c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056l0.00001,-0.00001z\" />\n</svg>\n \n"
        },
        "$:/core/images/video": {
            "title": "$:/core/images/video",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-video tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64,12 C29.0909091,12 8.72727273,14.9166667 5.81818182,17.8333333 C2.90909091,20.75 1.93784382e-15,41.1666667 0,64.5 C1.93784382e-15,87.8333333 2.90909091,108.25 5.81818182,111.166667 C8.72727273,114.083333 29.0909091,117 64,117 C98.9090909,117 119.272727,114.083333 122.181818,111.166667 C125.090909,108.25 128,87.8333333 128,64.5 C128,41.1666667 125.090909,20.75 122.181818,17.8333333 C119.272727,14.9166667 98.9090909,12 64,12 Z M54.9161194,44.6182253 C51.102648,42.0759111 48.0112186,43.7391738 48.0112186,48.3159447 L48.0112186,79.6840553 C48.0112186,84.2685636 51.109784,85.9193316 54.9161194,83.3817747 L77.0838806,68.6032672 C80.897352,66.0609529 80.890216,61.9342897 77.0838806,59.3967328 L54.9161194,44.6182253 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/warning": {
            "title": "$:/core/images/warning",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-warning tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M57.0717968,11 C60.1509982,5.66666667 67.8490018,5.66666667 70.9282032,11 L126.353829,107 C129.433031,112.333333 125.584029,119 119.425626,119 L8.57437416,119 C2.41597129,119 -1.43303051,112.333333 1.64617093,107 L57.0717968,11 Z M64,37 C59.581722,37 56,40.5820489 56,44.9935776 L56,73.0064224 C56,77.4211534 59.5907123,81 64,81 C68.418278,81 72,77.4179511 72,73.0064224 L72,44.9935776 C72,40.5788466 68.4092877,37 64,37 Z M64,104 C68.418278,104 72,100.418278 72,96 C72,91.581722 68.418278,88 64,88 C59.581722,88 56,91.581722 56,96 C56,100.418278 59.581722,104 64,104 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "advanced search"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "Advanced search"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "cancel"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "Discard changes to this tiddler"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "clone"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "Clone this tiddler"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "close"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "Close this tiddler"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "close all"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "Close all tiddlers"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "close others"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "Close other tiddlers"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "control panel"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "Open control panel"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "delete"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "Delete this tiddler"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "edit"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "Edit this tiddler"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "encryption"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "Set or clear a password for saving this wiki"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "clear password"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "Clear the password and save this wiki without encryption"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "set password"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "Set a password for saving this wiki with encryption"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "export all"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "Export all tiddlers"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "export tiddler"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "Export tiddler"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "export tiddlers"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "Export tiddlers"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "fold tiddler"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "Fold the body of this tiddler"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "fold-bar"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "Optional bars to fold and unfold tiddlers"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "unfold tiddler"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "Unfold the body of this tiddler"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "fold other tiddlers"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "Fold the bodies of other opened tiddlers"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "fold all tiddlers"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "Fold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "unfold all tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "Unfold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "full-screen"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "Enter or leave full-screen mode"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "help"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "Show help panel"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "import"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "Import many types of file including text, image, TiddlyWiki or JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "info"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "Show information for this tiddler"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "home"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "Open the default tiddlers"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "language"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "Choose the user interface language"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "tiddler manager"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "Open tiddler manager"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "more"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "More actions"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "new here"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "Create a new tiddler tagged with this one"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "new journal"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "Create a new journal tiddler"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "new journal here"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "Create a new journal tiddler tagged with this one"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "new image"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "Create a new image tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "new Markdown tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "Create a new Markdown tiddler"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "new tiddler"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "Create a new tiddler"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "open in new window"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "Open tiddler in new window"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "palette"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "Choose the colour palette"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "permalink"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "Set browser address bar to a direct link to this tiddler"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "permaview"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "Set browser address bar to a direct link to all the tiddlers in this story"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "print page"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "Print the current page"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "refresh"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "Perform a full refresh of the wiki"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "ok"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "Confirm changes to this tiddler"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "save changes"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "Save changes"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "storyview"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "Choose the story visualisation"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "hide sidebar"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "Hide sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "show sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "Show sidebar"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "tag manager"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "Open tag manager"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "timestamps"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "Choose whether modifications update timestamps"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "timestamps are on"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "Update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "timestamps are off"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "Don't update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "theme"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "Choose the display theme"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "bold"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "Apply bold formatting to selection"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "clear"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "Clear image to solid colour"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "editor height"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "Automatically adjust height to fit content"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "Fixed height:"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "Choose the height of the text editor"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "excise"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "Perform excision"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "Macro name:"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "Title of new tiddler:"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "Replace excised text with:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "macro"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "link"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "transclusion"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "Tag new tiddler with the title of this tiddler"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "Warning: tiddler already exists"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "Excise the selected text into a new tiddler"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "heading 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "Apply heading level 1 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "heading 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "Apply heading level 2 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "heading 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "Apply heading level 3 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "heading 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "Apply heading level 4 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "heading 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "Apply heading level 5 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "heading 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "Apply heading level 6 formatting to lines containing selection"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "italic"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "Apply italic formatting to selection"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "line width"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "Set line width for painting"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "link"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "Create wikitext link"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "bulleted list"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "Apply bulleted list formatting to lines containing selection"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "numbered list"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "Apply numbered list formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "monospaced block"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "Apply monospaced block formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "monospaced"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "Apply monospaced character formatting to selection"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "opacity"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "Set painting opacity"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "paint colour"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "Set painting colour"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "picture"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "Insert picture"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "preview"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "Show preview pane"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "preview type"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "Choose preview type"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "quote"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "Apply quoted text formatting to lines containing selection"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "image size"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "Height:"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "Resize image"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "Width:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "Set image size"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "stamp"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "Add your own"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "Insert a preconfigured snippet of text"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "Name as shown in menu"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "strikethrough"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "Apply strikethrough formatting to selection"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "subscript"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "Apply subscript formatting to selection"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "superscript"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "Apply superscript formatting to selection"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "underline"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "Apply underline formatting to selection"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "Internal information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "Appearance"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "Ways to customise the appearance of your TiddlyWiki."
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "Animation duration:"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "Basics"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "Default tiddlers:"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "Choose which tiddlers are displayed at startup:"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "Hello! Current language:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "Title of new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "Text for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "Tags for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "Number of overridden shadow tiddlers:"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "Number of shadow tiddlers:"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "Subtitle:"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "Number of system tiddlers:"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "Number of tags:"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "Number of tiddlers:"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "Title of this ~TiddlyWiki:"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "Username for signing edits:"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki version:"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "Editor Types"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "Editor"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "These tiddlers determine which editor is used to edit specific tiddler types."
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "Type"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "Info"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "Information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "Type shortcut here"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "add shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "Keyboard Shortcuts"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "Manage keyboard shortcut assignments"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "No keyboard shortcuts assigned"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "remove keyboard shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "All platforms"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "Macintosh platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "Non-Macintosh platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "Linux platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "Non-Linux platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "Windows platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "Non-Windows platforms only"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "Loaded Modules"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "Palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "clone"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "It is recommended that you clone this shadow palette before editing it"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "This shadow palette has been modified"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "Editing"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "reset"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "hide editor"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "Current palette:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "show editor"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "Parsing"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|http://tiddlywiki.com/#SafeMode]] to restore normal operation."
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "Block Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "Inline Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "Pragma Parse Rules"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "Get more plugins"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "Install plugins from the official library"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "disable"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "Disable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(disabled)"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "None"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "enable"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "Enable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "install"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "Currently installed plugins:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "Languages"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "Language pack plugins"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
        },
        "$:/language/ControlPanel/Plugins/NoInformation/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInformation/Hint",
            "text": "No information provided"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "This plugin is not currently installed"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "open plugin library"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "close plugin library"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "reinstall"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "Themes"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "Theme plugins"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "Saving"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "Permit automatic saving for the download saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "Enable Autosave for Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "These settings apply to the HTML5-compatible download saver"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "General"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "These settings apply to all the loaded savers"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "Advanced Settings"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "Backup Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "Backups"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot Saver"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "Upload Filename"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "Password"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "Server URL"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "Upload Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "Wiki Name"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "Autosave"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "Do not save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "Save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "Attempt to automatically save changes during editing when using a supporting saver"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "Camel Case Wiki Links"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "Enable automatic ~CamelCase linking"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "Settings"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "Enable or disable the editor toolbar:"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "Show editor toolbar"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "Tiddler Info Panel Mode"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "Control when the tiddler info panel closes:"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "Tiddler info panel closes automatically"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "Tiddler info panel stays open until explicitly closed"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "These settings let you customise the behaviour of TiddlyWiki."
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "Navigation Address Bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "Behaviour of the browser address bar when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "Do not update the address bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "Include the target tiddler"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "Include the target tiddler and the current story sequence"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "Navigation History"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "Update browser history when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "Do not update history"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "Update history"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "Performance Instrumentation"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "Enable performance instrumentation"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "Toolbar Button Style"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "Choose the style for toolbar buttons:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "Borderless"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "Boxed"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "Rounded"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "Toolbar Buttons"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "Default toolbar button appearance:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "Include icon"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "Include text"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "Default Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "Specify which sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "Tiddler Opening Behaviour"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "Navigation from //within// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "Navigation from //outside// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "Open above the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "Open below the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "Open at the top of the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "Open at the bottom of the story river"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "Tiddler Titles"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "Optionally display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "Do not display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "Display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "Wiki Links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "Choose whether to link to tiddlers that do not exist yet"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "Enable links to missing tiddlers"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "Story View"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "Current view:"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "Theme"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "Current theme:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "Tiddler Fields"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "Toolbars"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "Edit Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "Select which toolbar buttons are displayed"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "Page Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "View Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "Download full wiki"
        },
        "$:/language/Date/DaySuffix/1": {
            "title": "$:/language/Date/DaySuffix/1",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/2": {
            "title": "$:/language/Date/DaySuffix/2",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/3": {
            "title": "$:/language/Date/DaySuffix/3",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/4": {
            "title": "$:/language/Date/DaySuffix/4",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/5": {
            "title": "$:/language/Date/DaySuffix/5",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/6": {
            "title": "$:/language/Date/DaySuffix/6",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/7": {
            "title": "$:/language/Date/DaySuffix/7",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/8": {
            "title": "$:/language/Date/DaySuffix/8",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/9": {
            "title": "$:/language/Date/DaySuffix/9",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/10": {
            "title": "$:/language/Date/DaySuffix/10",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/11": {
            "title": "$:/language/Date/DaySuffix/11",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/12": {
            "title": "$:/language/Date/DaySuffix/12",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/13": {
            "title": "$:/language/Date/DaySuffix/13",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/14": {
            "title": "$:/language/Date/DaySuffix/14",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/15": {
            "title": "$:/language/Date/DaySuffix/15",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/16": {
            "title": "$:/language/Date/DaySuffix/16",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/17": {
            "title": "$:/language/Date/DaySuffix/17",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/18": {
            "title": "$:/language/Date/DaySuffix/18",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/19": {
            "title": "$:/language/Date/DaySuffix/19",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/20": {
            "title": "$:/language/Date/DaySuffix/20",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/21": {
            "title": "$:/language/Date/DaySuffix/21",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/22": {
            "title": "$:/language/Date/DaySuffix/22",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/23": {
            "title": "$:/language/Date/DaySuffix/23",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/24": {
            "title": "$:/language/Date/DaySuffix/24",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/25": {
            "title": "$:/language/Date/DaySuffix/25",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/26": {
            "title": "$:/language/Date/DaySuffix/26",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/27": {
            "title": "$:/language/Date/DaySuffix/27",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/28": {
            "title": "$:/language/Date/DaySuffix/28",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/29": {
            "title": "$:/language/Date/DaySuffix/29",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/30": {
            "title": "$:/language/Date/DaySuffix/30",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/31": {
            "title": "$:/language/Date/DaySuffix/31",
            "text": "st"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "Sunday"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "Monday"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "Tuesday"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "Wednesday"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "Thursday"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "Friday"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "Saturday"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "January"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "February"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "March"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "April"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "May"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "June"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "July"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "August"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "September"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "October"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "November"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "December"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "am"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "pm"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "Sun"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "Mon"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "Tue"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "Wed"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "Thu"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "Fri"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "Sat"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "Jan"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "Feb"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "Mar"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "Apr"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "May"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "Jun"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "Jul"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "Aug"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "Sep"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "Oct"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "Nov"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "Dec"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> days from now"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> hours from now"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> minutes from now"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> months from now"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 second from now"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> seconds from now"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> years from now"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> days ago"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> hours ago"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> minutes ago"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> months ago"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 second ago"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> seconds ago"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> years ago"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "A sub-operator for the ''all'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "Animations that may be used with the RevealWidget."
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "A bitmap editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "Commands that can be executed under Node.js."
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "Data to be inserted into `$tw.config`."
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "Individual filter operator methods."
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "Global data to be inserted into `$tw`."
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "Operands for the ''is'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "Generic module type for general purpose JavaScript modules."
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript macro definitions."
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "Parsers for different content types."
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "Savers handle different methods for saving files from the browser."
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "Startup functions."
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "Story views customise the animation and behaviour of list widgets."
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "A text editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "Converts different content types into tiddlers."
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "Defines the behaviour of an individual tiddler field."
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "Adds methods to the `$tw.Tiddler` prototype."
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "Applies upgrade processing to tiddlers during an upgrade/import."
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "Adds methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "Adds Node.js-specific methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "Widgets encapsulate DOM rendering and refreshing."
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "Adds methods to `$tw.Wiki`."
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "Individual parser rules for the main WikiText parser."
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "Alert background"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "Alert border"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "Alert highlight"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "Alert muted foreground"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "General background"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "Blockquote bar"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "Default button background"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "Default button border"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "Default button foreground"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "Unsaved changes indicator"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "Code background"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "Code border"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "Code foreground"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "Download button background"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "Download button foreground"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "Dragger background"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "Dragger foreground"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "Dropdown background"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "Dropdown border"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "Dropdown tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "Dropdown tab background"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "Dropzone background"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "External link background hover"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "External link background visited"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "External link background"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "External link foreground hover"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "External link foreground visited"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "External link foreground"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "General foreground"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "Message box background"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "Message box border"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "Message box foreground"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "Modal backdrop"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "Modal background"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "Modal border"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "Modal footer background"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "Modal footer border"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "Modal header border"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "General muted foreground"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "Notification background"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "Notification border"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "Page background"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "Preformatted code background"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "Preformatted code border"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "General primary"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "Sidebar button foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "Sidebar controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "Sidebar controls foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "Sidebar foreground shadow"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "Sidebar foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "Sidebar muted foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "Sidebar muted foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "Sidebar tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "Sidebar tab background"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "Sidebar tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "Sidebar tab border"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "Sidebar tab divider"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "Sidebar tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "Sidebar tab foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "Sidebar tiddler link foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "Sidebar tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "Site title foreground"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "Static alert foreground"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "Tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "Tab background"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "Tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "Tab border"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "Tab divider"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "Tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "Tab foreground"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "Table border"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "Table footer background"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "Table header background"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "Tag background"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "Tag foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "Tiddler background"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "Tiddler border"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "Tiddler controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "Tiddler controls foreground for selected controls"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "Tiddler controls foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "Tiddler editor background"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "Tiddler editor border image"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "Tiddler editor border"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "Tiddler editor background for even fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "Tiddler editor background for odd fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "Tiddler info panel background"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "Tiddler info panel border"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "Tiddler info panel tab background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "Tiddler link background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "Tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "Tiddler subtitle foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "Tiddler title foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "Toolbar 'new tiddler' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "Toolbar 'options' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "Toolbar 'save' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "Toolbar 'info' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "Toolbar 'edit' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "Toolbar 'close' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "Toolbar 'delete' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "Toolbar 'cancel' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "Toolbar 'done' button foreground"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "Untagged pill background"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "Very muted foreground"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "This is an external tiddler stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "Type the text for this tiddler"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "output"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "remove field"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "Remove field"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "field name"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "Add a new field:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "field value"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "System fields"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "User fields"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "tag name"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "tag list"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "Show tag list"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "Target tiddler already exists"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "content type list"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "Show content type list"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "delete content type"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "Delete content type"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "content type"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "Type:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "Static HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON file"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV file"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" file"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "The full URI of an external image tiddler"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "The name of the bag from which a tiddler came"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "The text to be displayed on a tab or button"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "The CSS color value associated with a tiddler"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "The date a tiddler was created"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "The name of the person who created a tiddler"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "For a plugin, lists the dependent plugin titles"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "The descriptive text for a plugin, or a modal dialogue"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "For draft tiddlers, contains the proposed new title of the tiddler"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "The footer text for a wizard"
        },
        "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": {
            "title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against",
            "text": "A temporary storage field used in [[$:/core/templates/static.content]]"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "The title of the tiddler containing the icon associated with a tiddler"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "If set to \"yes\" indicates that a tiddler should be saved as a JavaScript library"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "An ordered list of tiddler titles associated with a tiddler"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "The date and time at which a tiddler was last modified"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "The tiddler title associated with the person who last modified a tiddler"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "The human readable name associated with a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "A numerical value indicating the priority of a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "The type of plugin in a plugin tiddler"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "The revision of the tiddler held at the server"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "Date of a TiddlyWiki release"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "The source URL associated with a tiddler"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "The subtitle text for a wizard"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "A list of tags associated with a tiddler"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "The body text of a tiddler"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "The unique name of a tiddler"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "The content type of a tiddler"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "Version information for a plugin"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "All tiddlers except system tiddlers"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "Recently modified tiddlers, including system tiddlers"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "Recently modified tiddlers"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "All tags except system tags"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "Missing tiddlers"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "Draft tiddlers"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "Orphan tiddlers"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "System tiddlers"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "Shadow tiddlers"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "Overridden shadow tiddlers"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "System tags"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "Non wiki-text tiddlers"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See http://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "Automatically run configured commands",
            "text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "Clear a password for subsequent crypto operations",
            "text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "Lists the available editions of TiddlyWiki",
            "text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "Fetch tiddlers from wiki by URL",
            "text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n```\n\nWith the \"file\" variant only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" variant, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nThe `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nThe `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from http://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"http://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "Display help for TiddlyWiki commands",
            "text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "Initialise a new wiki folder",
            "text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "Load tiddlers from a file",
            "text": "Load tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files\n\n```\n--load <filepath>\n```\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "Construct library plugin required by upgrade process",
            "text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "No such help item"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "Set the base output directory for subsequent commands",
            "text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "Set a password for subsequent crypto operations",
            "text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "Render an individual tiddler as a specified ContentType",
            "text": "Render an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "Render tiddlers matching a filter to a specified ContentType",
            "text": "Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "Saves a raw tiddler to a file",
            "text": "Saves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "Saves a group of raw tiddlers to a directory",
            "text": "Saves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "Provides an HTTP server interface to TiddlyWiki",
            "text": "The server built in to TiddlyWiki5 is very simple. Although compatible with TiddlyWeb it doesn't support many of the features needed for robust Internet-facing usage.\n\nAt the root, it serves a rendering of a specified tiddler. Away from the root, it serves individual tiddlers encoded in JSON, and supports the basic HTTP operations for `GET`, `PUT` and `DELETE`.\n\n```\n--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix>\n```\n\nThe parameters are:\n\n* ''port'' - port number to serve from (defaults to \"8080\")\n* ''roottiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''rendertype'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''servetype'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''pathprefix'' - optional prefix for paths\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation isn't suitable for general use.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port.\n"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "Prepares external tiddlers for use",
            "text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "Unpack the payload tiddlers from a plugin",
            "text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "Triggers verbose output mode",
            "text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "Displays the version number of TiddlyWiki",
            "text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "The following tiddlers were imported:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "These tiddlers are ready to import:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "Import"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "Select"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "Status"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "Title"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "Blocked incompatible or obsolete plugin"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "Blocked temporary state tiddler"
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "Blocked system tiddler"
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "Migrated theme tweak from <$text text=<<from>>/>"
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "This tiddler contains binary data"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See http://tiddlywiki.com/static/Upgrading.html for more details."
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "upgrade"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "close all"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "Recent:"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "count"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "New Tiddler"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "Drop here (or use the 'Escape' key to cancel)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "Cancel"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "Set a new password for this TiddlyWiki"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "Username"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "Password"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "Repeat password"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "Passwords do not match"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "Set password"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "Error"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "File changed on server"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "Filter error"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "Syntax error in filter expression"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "Filter Error: Unknown operand for the 'is' filter operator"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "Error loading plugin library"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "Recursive transclusion error in transclude widget"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "Error retrieving skinny tiddler list"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "Error saving to TWEdit"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "Error while saving"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest error code"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "Internal JavaScript Error"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>Loading external text from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See http://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "Login to TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(none)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "Filter by tag:"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "Reverse order"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "Search"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "Search:"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "tags"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "tiddlers"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "Show:"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "Sort by:"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "Colour"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "Fields"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(none)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "Icon"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "Raw text"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "Tags"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "Tools"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified text"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" - click {{$:/core/images/edit-button}} to create"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "No"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "Official ~TiddlyWiki Plugin Library"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "DDth MMM YYYY"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "This is a system tiddler"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "Include system tiddlers"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "Colour"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "Count"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "Icon"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "Info"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "Tag"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "DDth MMM YYYY at hh12:0mmam"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "You have unsaved changes in TiddlyWiki"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "Yes"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "http://tiddlywiki.com/static/DownloadingChanges.html",
            "text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "http://tiddlywiki.com/static/SavingChanges.html",
            "text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "DDth MMM YYYY"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "text": "Journal"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "Saved wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "Starting to save wiki"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "List"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "Filter"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "Search via a [[filter expression|http://tiddlywiki.com/static/Filters.html]]"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "All matches:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "Title matches:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "Search"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "Search text too short"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "Search for shadow tiddlers"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "Standard"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "Search for standard tiddlers"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "System"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "Search for system tiddlers"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "All"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "Contents"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "Drafts"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "Missing"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "More"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "Open"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "Orphans"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "Recent"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "System"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "Tags"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "untagged"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "Types"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "a non-linear personal web notebook"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "My ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "List of tiddlers by tag",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Macro definition",
            "text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table with 4 columns by 3 rows",
            "text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table of Contents",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "Theme Tweaks"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "You can tweak certain aspects of the ''Vanilla'' theme."
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "Options"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "Sidebar layout"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "Fixed story, fluid sidebar"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "Fluid story, fixed sidebar"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "Sticky titles"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "Causes tiddler titles to \"stick\" to the top of the browser window. Caution: Does not work at all with Chrome, and causes some layout issues in Firefox"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "Wrap long lines in code blocks"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "Settings"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "Font family"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "Code font family"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "Page background image"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "Page background image attachment"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "Scroll with tiddlers"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "Fixed to window"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "Page background image size"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "Auto"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "Cover"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "Contain"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "Sizes"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "Font size"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "Line height"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "Font size for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "Line height for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "Story left position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "Story top position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "how far the top margin of the story river<br>is from the top of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "Story right"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "how far the left margin of the sidebar <br>is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "Story width"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "the overall width of the story river"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "Tiddler width"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "within the story river"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "Sidebar breakpoint"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "Sidebar width"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "the width of the sidebar in fluid-fixed layout"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "none"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "Plugin Details"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "This plugin contains the following shadow tiddlers:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "Shadow Status"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "It is overridden by an ordinary tiddler"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "Fields"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "List"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "This tiddler does not have a list"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "Listed"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "This tiddler is not listed by any others"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "References"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "No tiddlers link to this one"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "Tagging"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "No tiddlers are tagged with this one"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript code",
            "name": "application/javascript",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON data",
            "name": "application/json",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "Data dictionary",
            "name": "application/x-tiddler-dictionary",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF image",
            "name": "image/gif",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG image",
            "name": "image/jpeg",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG image",
            "name": "image/png",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "Structured Vector Graphics image",
            "name": "image/svg+xml",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "ICO format icon file",
            "name": "image/x-icon",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "Static stylesheet",
            "name": "text/css",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML markup",
            "name": "text/html",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "Plain text",
            "name": "text/plain",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki Classic",
            "name": "text/x-tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/languages/en-GB/icon": {
            "title": "$:/languages/en-GB/icon",
            "type": "image/svg+xml",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
        },
        "$:/languages/en-GB": {
            "title": "$:/languages/en-GB",
            "name": "en-GB",
            "description": "English (British)",
            "author": "JeremyRuston",
            "core-version": ">=5.0.0\"",
            "text": "Stub pseudo-plugin for the default language"
        },
        "$:/core/modules/commander.js": {
            "text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
            "title": "$:/core/modules/commander.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/commands/build.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/build.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/clearpassword.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/clearpassword.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/editions.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\"    \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/editions.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/fetch.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tvar subcommand = this.params[0],\n\t\turl = this.params[1],\n\t\timportFilter = this.params[2] || \"[all[tiddlers]]\",\n\t\ttransformFilter = this.params[3] || \"\";\n\tswitch(subcommand) {\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: url,\n\t\t\t\timportFilter: importFilter,\n\t\t\t\ttransformFilter: transformFilter,\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: url,\n\t\t\t\timportFilter: importFilter,\n\t\t\t\ttransformFilter: transformFilter,\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = $tw.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback) {\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t    var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t    \tbody = \"\";\n\t    self.commander.write(\"Reading \" + url + \": \");\n\t    response.on(\"data\",function(chunk) {\n\t        body += chunk;\n\t        self.commander.write(\".\");\n\t    });\n\t    response.on(\"end\",function() {\n\t        self.commander.write(\"\\n\");\n\t        if(response.statusCode === 200) {\n\t\t        self.processBody(body,type,options);\n\t\t        callback(null);\n\t        } else {\n\t        \tcallback(\"Error \" + response.statusCode + \" retrieving \" + url)\n\t        }\n\t   \t});\n\t   \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t   \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options) {\n\t// Deserialise the HTML file and put the tiddlers in their own wiki\n\tvar self = this,\n\t\tincomingWiki = new $tw.Wiki(),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body,{});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter);\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/fetch.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/help.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/help.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/init.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/init.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/load.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar ext = path.extname(self.params[0]),\n\t\tstat = fs.statSync(self.params[0]),\n\t\ttiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count) {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/load.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/makelibrary.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.pluginsPath));\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.themesPath));\n\tcollectPlugins(path.resolve($tw.boot.corePath,$tw.config.languagesPath));\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers},null,$tw.config.preferences.jsonSpaces)\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/makelibrary.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/output.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/output.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/password.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/password.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/rendertiddler.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/rendertiddlers.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savelibrarytiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler,null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{text: undefined, readme: readmeContent, icon: iconContent}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/savelibrarytiddlers.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/savetiddler.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/savetiddlers.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/server.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\thttp = require(\"http\");\n}\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\n/*\nA simple HTTP server with regexp-based routes\n*/\nfunction SimpleServer(options) {\n\tthis.routes = options.routes || [];\n\tthis.wiki = options.wiki;\n\tthis.variables = options.variables || {};\n}\n\nSimpleServer.prototype.set = function(obj) {\n\tvar self = this;\n\t$tw.utils.each(obj,function(value,name) {\n\t\tself.variables[name] = value;\n\t});\n};\n\nSimpleServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nSimpleServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nSimpleServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"pathprefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length);\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nSimpleServer.prototype.checkCredentials = function(request,incomingUsername,incomingPassword) {\n\tvar header = request.headers.authorization || \"\",\n\t\ttoken = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tusername = parts[0],\n\t\tpassword = parts[1];\n\tif(incomingUsername === username && incomingPassword === password) {\n\t\treturn \"ALLOWED\";\n\t} else {\n\t\treturn \"DENIED\";\n\t}\n};\n\nSimpleServer.prototype.requestHandler = function(request,response) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Check for the username and password if we've got one\n\tvar username = self.get(\"username\"),\n\t\tpassword = self.get(\"password\");\n\tif(username && password) {\n\t\t// Check they match\n\t\tif(self.checkCredentials(request,username,password) !== \"ALLOWED\") {\n\t\t\tvar servername = state.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\";\n\t\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + servername + '\"'\n\t\t\t});\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Set the encoding for the incoming request\n\t// TODO: Presumably this would need tweaking if we supported PUTting binary tiddlers\n\trequest.setEncoding(\"utf8\");\n\t// Dispatch the appropriate method\n\tswitch(request.method) {\n\t\tcase \"GET\": // Intentional fall-through\n\t\tcase \"DELETE\":\n\t\t\troute.handler(request,response,state);\n\t\t\tbreak;\n\t\tcase \"PUT\":\n\t\t\tvar data = \"\";\n\t\t\trequest.on(\"data\",function(chunk) {\n\t\t\t\tdata += chunk.toString();\n\t\t\t});\n\t\t\trequest.on(\"end\",function() {\n\t\t\t\tstate.data = data;\n\t\t\t\troute.handler(request,response,state);\n\t\t\t});\n\t\t\tbreak;\n\t}\n};\n\t\nSimpleServer.prototype.listen = function(port,host) {\n\thttp.createServer(this.requestHandler.bind(this)).listen(port,host);\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n\t// Set up server\n\tthis.server = new SimpleServer({\n\t\twiki: this.commander.wiki\n\t});\n\t// Add route handlers\n\tthis.server.addRoute({\n\t\tmethod: \"PUT\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\tfields = JSON.parse(state.data);\n\t\t\t// Pull up any subfields in the `fields` object\n\t\t\tif(fields.fields) {\n\t\t\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\t\t\tfields[name] = field;\n\t\t\t\t});\n\t\t\t\tdelete fields.fields;\n\t\t\t}\n\t\t\t// Remove any revision field\n\t\t\tif(fields.revision) {\n\t\t\t\tdelete fields.revision;\n\t\t\t}\n\t\t\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\t\t\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\t\t\tresponse.writeHead(204, \"OK\",{\n\t\t\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"DELETE\",\n\t\tpath: /^\\/bags\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]);\n\t\t\tstate.wiki.deleteTiddler(title);\n\t\t\tresponse.writeHead(204, \"OK\", {\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": state.server.get(\"serveType\")});\n\t\t\tvar text = state.wiki.renderTiddler(state.server.get(\"renderType\"),state.server.get(\"rootTiddler\"));\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/status$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar text = JSON.stringify({\n\t\t\t\tusername: state.server.get(\"username\"),\n\t\t\t\tspace: {\n\t\t\t\t\trecipe: \"default\"\n\t\t\t\t},\n\t\t\t\ttiddlywiki_version: $tw.version\n\t\t\t});\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/favicon.ico$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\t\t\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\t\t\tresponse.end(buffer,\"base64\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers.json$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar tiddlers = [];\n\t\t\tstate.wiki.forEachTiddler({sortField: \"title\"},function(title,tiddler) {\n\t\t\t\tvar tiddlerFields = {};\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tif(name !== \"text\") {\n\t\t\t\t\t\ttiddlerFields[name] = tiddler.getFieldString(name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\ttiddlers.push(tiddlerFields);\n\t\t\t});\n\t\t\tvar text = JSON.stringify(tiddlers);\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\ttiddler = state.wiki.getTiddler(title),\n\t\t\t\ttiddlerFields = {},\n\t\t\t\tknownFields = [\n\t\t\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t\t\t];\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\t\t\ttiddlerFields[name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t\t\t} else {\n\t\t\t\tresponse.writeHead(404);\n\t\t\t\tresponse.end();\n\t\t\t}\n\t\t}\n\t});\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\tvar port = this.params[0] || \"8080\",\n\t\trootTiddler = this.params[1] || \"$:/core/save/all\",\n\t\trenderType = this.params[2] || \"text/plain\",\n\t\tserveType = this.params[3] || \"text/html\",\n\t\tusername = this.params[4],\n\t\tpassword = this.params[5],\n\t\thost = this.params[6] || \"127.0.0.1\",\n\t\tpathprefix = this.params[7];\n\tthis.server.set({\n\t\trootTiddler: rootTiddler,\n\t\trenderType: renderType,\n\t\tserveType: serveType,\n\t\tusername: username,\n\t\tpassword: password,\n\t\tpathprefix: pathprefix\n\t});\n\tthis.server.listen(port,host);\n\tconsole.log(\"Serving on \" + host + \":\" + port);\n\tconsole.log(\"(press ctrl-C to exit)\");\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/server.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/setfield.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/setfield.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/unpackplugin.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/unpackplugin.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/verbose.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n  \" + $tw.boot.logMessages.join(\"\\n  \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/verbose.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/version.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/version.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/config.js": {
            "text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter:   \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
            "title": "$:/core/modules/config.js",
            "type": "application/javascript",
            "module-type": "config"
        },
        "$:/core/modules/deserializers.js": {
            "text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
            "title": "$:/core/modules/deserializers.js",
            "type": "application/javascript",
            "module-type": "tiddlerdeserializer"
        },
        "$:/core/modules/editor/engines/framed.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
            "title": "$:/core/modules/editor/engines/framed.js",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/engines/simple.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
            "title": "$:/core/modules/editor/engines/simple.js",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/factory.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag);\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup ||  changedAttributes.rows || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\t\t\t\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t    clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t    el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
            "title": "$:/core/modules/editor/factory.js",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/operations/bitmap/clear.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/bitmap/clear.js",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/resize.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/bitmap/resize.js",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/text/excise.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ?  [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/excise.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/make-link.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/make-link.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/prefix-lines.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,event.paramObject.count);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== event.paramObject.count) {\n\t\t\t// Apply the prefix\n\t\t\tline =  prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/prefix-lines.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-all.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/replace-all.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-selection.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/replace-selection.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-lines.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/wrap-lines.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-selection.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix unless they comprise the entire text\n\t\t\tif(operation.selStart > event.paramObject.prefix.length || (operation.selEnd + event.paramObject.suffix.length) < operation.text.length ) {\n\t\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\t\toperation.replacement = \"\";\n\t\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t\t}\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/wrap-selection.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/filters/addprefix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/addprefix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/addsuffix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/addsuffix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/after.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/after.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/all/current.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/current.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/missing.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/missing.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/orphans.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/orphans.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/shadows.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/shadows.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tags.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/tags.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/tiddlers.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/backlinks.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/backlinks.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/before.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/before.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/commands.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/commands.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/count.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
            "title": "$:/core/modules/filters/count.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/days.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/days.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/each.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\t\tvalue,values = {},\n\t\tfield = operator.operand || \"title\";\n\tif(operator.suffix !== \"list-item\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvalue = (field === \"title\") ? title : tiddler.getFieldString(field);\n\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/each.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/eachday.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/eachday.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editiondescription.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/editiondescription.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editions.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/editions.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/decodeuricomponent.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(decodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(decodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/decodeuricomponent.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/enlist.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar list = $tw.utils.parseStringArray(operator.operand);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/enlist.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/field.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/field.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/fields.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/fields.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/get.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/get.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getindex.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/getindex.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/has.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === \"\")) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === \"\" || tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/has.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/haschanged.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/haschanged.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/indexes.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/indexes.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/insertbefore.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/insertbefore.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/is/current.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/current.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/image.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/image.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/missing.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/missing.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/orphan.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/orphan.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/shadow.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/shadow.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/system.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/system.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tag.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/tag.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/tiddler.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/limit.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/limit.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/links.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/links.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/list.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/list.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listed.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/listed.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listops.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\t\t\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
            "title": "$:/core/modules/filters/listops.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/minlength.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/minlength.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/modules.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/modules.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/moduletypes.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/moduletypes.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/next.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/next.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/plugintiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/plugintiddlers.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/prefix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/prefix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/previous.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/previous.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/regexp.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/regexp.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removeprefix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/removeprefix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removesuffix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/removesuffix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sameday.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/sameday.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/search.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffix) {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: operator.suffix\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/search.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/shadowsource.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/shadowsource.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sort.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/sort.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/splitbefore.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/splitbefore.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/storyviews.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/storyviews.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/suffix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/suffix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tag.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [];\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !tiddler.hasTag(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && tiddler.hasTag(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/tag.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tagging.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/tagging.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tags.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
            "title": "$:/core/modules/filters/tags.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/title.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/title.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/untagged.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/untagged.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/wikiparserrules.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/wikiparserrules.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/x-listops.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n    /*jslint node: true, browser: true */\n    /*global $tw: false */\n    \"use strict\";\n\n    /*\n    Fetch titles from the current list\n    */\n    var prepare_results = function (source) {\n    var results = [];\n        source(function (tiddler, title) {\n            results.push(title);\n        });\n        return results;\n    };\n\n    /*\n    Moves a number of items from the tail of the current list before the item named in the operand\n    */\n    exports.putbefore = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = parseInt(operator.suffix) || 1;\n        return (index === -1) ?\n            results.slice(0, -1) :\n            results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n    };\n\n    /*\n    Moves a number of items from the tail of the current list after the item named in the operand\n    */\n    exports.putafter = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = parseInt(operator.suffix) || 1;\n        return (index === -1) ?\n            results.slice(0, -1) :\n            results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n    };\n\n    /*\n    Replaces the item named in the operand with a number of items from the tail of the current list\n    */\n    exports.replace = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = parseInt(operator.suffix) || 1;\n        return (index === -1) ?\n            results.slice(0, -count) :\n            results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n    };\n\n    /*\n    Moves a number of items from the tail of the current list to the head of the list\n    */\n    exports.putfirst = function (source, operator) {\n        var results = prepare_results(source),\n            count = parseInt(operator.suffix) || 1;\n        return results.slice(-count).concat(results.slice(0, -count));\n    };\n\n    /*\n    Moves a number of items from the head of the current list to the tail of the list\n    */\n    exports.putlast = function (source, operator) {\n        var results = prepare_results(source),\n            count = parseInt(operator.suffix) || 1;\n        return results.slice(count).concat(results.slice(0, count));\n    };\n\n    /*\n    Moves the item named in the operand a number of places forward or backward in the list\n    */\n    exports.move = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = parseInt(operator.suffix) || 1,\n            marker = results.splice(index, 1),\n            offset =  (index + count) > 0 ? index + count : 0;\n        return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n    };\n\n    /*\n    Returns the items from the current list that are after the item named in the operand\n    */\n    exports.allafter = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand);\n        return (index === -1 || index > (results.length - 2)) ? [] :\n            (operator.suffix) ? results.slice(index) :\n            results.slice(index + 1);\n    };\n\n    /*\n    Returns the items from the current list that are before the item named in the operand\n    */\n    exports.allbefore = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand);\n        return (index <= 0) ? [] :\n            (operator.suffix) ? results.slice(0, index + 1) :\n            results.slice(0, index);\n    };\n\n    /*\n    Appends the items listed in the operand array to the tail of the current list\n    */\n    exports.append = function (source, operator) {\n        var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || append.length;\n        return (append.length === 0) ? results :\n            (operator.prefix) ? results.concat(append.slice(-count)) :\n            results.concat(append.slice(0, count));\n    };\n\n    /*\n    Prepends the items listed in the operand array to the head of the current list\n    */\n    exports.prepend = function (source, operator) {\n        var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || prepend.length;\n        return (prepend.length === 0) ? results :\n            (operator.prefix) ? prepend.slice(-count).concat(results) :\n            prepend.slice(0, count).concat(results);\n    };\n\n    /*\n    Returns all items from the current list except the items listed in the operand array\n    */\n    exports.remove = function (source, operator) {\n        var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || array.length,\n            p,\n            len,\n            index;\n        len = array.length - 1;\n        for (p = 0; p < count; ++p) {\n            if (operator.prefix) {\n                index = results.indexOf(array[len - p]);\n            } else {\n                index = results.indexOf(array[p]);\n            }\n            if (index !== -1) {\n                results.splice(index, 1);\n            }\n        }\n        return results;\n    };\n\n    /*\n    Returns all items from the current list sorted in the order of the items in the operand array\n    */\n    exports.sortby = function (source, operator) {\n        var results = prepare_results(source);\n        if (!results || results.length < 2) {\n            return results;\n        }\n        var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n        results.sort(function (a, b) {\n            return lookup.indexOf(a) - lookup.indexOf(b);\n        });\n        return results;\n    };\n\n    /*\n    Removes all duplicate items from the current list\n    */\n    exports.unique = function (source, operator) {\n        var results = prepare_results(source);\n        var set = results.reduce(function (a, b) {\n            if (a.indexOf(b) < 0) {\n                a.push(b);\n            }\n            return a;\n        }, []);\n        return set;\n    };\n})();\n",
            "title": "$:/core/modules/filters/x-listops.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter\",function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
            "title": "$:/core/modules/filters.js",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/info/platform.js": {
            "text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\t// Document location\n\tif($tw.browser) {\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
            "title": "$:/core/modules/info/platform.js",
            "type": "application/javascript",
            "module-type": "info"
        },
        "$:/core/modules/keyboard.js": {
            "text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\tlookupName(\"shortcuts\");\n\t\t\t\tlookupName($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\");\n\t\t\t\tlookupName($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\t\t\t\tlookupName($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t   (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t   (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t   (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t   (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
            "title": "$:/core/modules/keyboard.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/language.js": {
            "text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
            "title": "$:/core/modules/language.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/macros/changecount.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
            "title": "$:/core/modules/macros/changecount.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/contrastcolour.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
            "title": "$:/core/modules/macros/contrastcolour.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/csvtiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
            "title": "$:/core/modules/macros/csvtiddlers.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/displayshortcuts.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t    return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/macros/displayshortcuts.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/dumpvariables.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/dumpvariables.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to dump all active variable values\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"dumpvariables\";\n\nexports.params = [\n];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\tvar output = [\"|!Variable |!Value |\"],\n\t\tvariables = [], variable;\n\tfor(variable in this.variables) {\n\t\tvariables.push(variable);\n\t}\n\tvariables.sort();\n\tfor(var index=0; index<variables.length; index++) {\n\t\tvar variable = variables[index];\n\t\toutput.push(\"|\" + variable + \" |<input size=50 value=<<\" + variable + \">>/> |\")\n\t}\n\treturn output.join(\"\\n\");\n};\n\n})();\n",
            "title": "$:/core/modules/macros/dumpvariables.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
            "title": "$:/core/modules/macros/jsontiddler.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter) {\n\tvar tiddlers = this.wiki.filterTiddlers(filter),\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
            "title": "$:/core/modules/macros/jsontiddlers.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/makedatauri.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type) {\n\treturn $tw.utils.makeDataUri(text,type);\n};\n\n})();\n",
            "title": "$:/core/modules/macros/makedatauri.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/now.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
            "title": "$:/core/modules/macros/now.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/qualify.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
            "title": "$:/core/modules/macros/qualify.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/resolvepath.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
            "title": "$:/core/modules/macros/resolvepath.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/version.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
            "title": "$:/core/modules/macros/version.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/parsers/audioparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/audioparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/csvparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/csvparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/htmlparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/htmlparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/imageparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/imageparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/utils/parseutils.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "title": "$:/core/modules/utils/parseutils.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/parsers/pdfparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/pdfparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/textparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/textparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/videoparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/videoparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/dash.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"&ndash;\" : \"&mdash;\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/entity.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: &copy;\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/extlink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: http://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/heading.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/html.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/html.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/image.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[http://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [http://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [http://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|http://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/image.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/list.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"p\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/list.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[http://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|http://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/rules.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/syslink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/table.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/table.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n  <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/wikiparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined  && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t//  Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t//  Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,nextMatch.matchIndex)});\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\ttree.push({type: \"text\", text: this.source.substr(this.pos)});\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,terminatorMatch.index)});\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,inlineRuleMatch.matchIndex)});\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\ttree.push({type: \"text\", text: this.source.substr(this.pos)});\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/pluginswitcher.js": {
            "text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
            "title": "$:/core/modules/pluginswitcher.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/saver-handler.js": {
            "text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tthis.numChanges = 0;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\",\n\t\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
            "title": "$:/core/modules/saver-handler.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/savers/andtidwiki.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t// Strip the file://\n\tif(pathname.indexOf(\"file://\") === 0) {\n\t\tpathname = pathname.substr(7);\n\t}\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Save the file\n\twindow.twi.saveFile(pathname,text);\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/andtidwiki.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/beaker.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar url = (location.toString()).split(\"#\")[0];\n\tdat.stat(url).then(function(value) {\n\t\tif(value.type === \"directory\") {\n\t\t\turl = url + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(url,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\t\t\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.dat;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/beaker.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/download.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\tfilename = document.location.pathname.substr(p+1);\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/download.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/fsosaver.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/fsosaver.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/manualdownload.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/manualdownload.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/msdownload.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/msdownload.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/put.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err, data, xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\t// Retrieve ETag if available\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"HEAD\",\n\t\tcallback: function(err, data, xhr) {\n\t\t\tif(!err) {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t}\n\t\t}\n\t});\n};\n\nPutSaver.prototype.uri = function() {\n\treturn encodeURI(document.location.toString().split(\"#\")[0]);\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text, method, callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = { \"Content-Type\": \"text/html;charset=UTF-8\" };\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err, data, xhr) {\n\t\t\tif(err) {\n\t\t\t\tcallback(err);\n\t\t\t} if(xhr.status === 200 || xhr.status === 201) {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tcallback(null); // success\n\t\t\t} else if(xhr.status === 412) { // edit conflict\n\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\tcallback(message);\n\t\t\t} else {\n\t\t\t\tcallback(xhr.responseText); // fail\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/put.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyfox.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/tiddlyfox.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyie.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/tiddlyie.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/twedit.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
            "title": "$:/core/modules/savers/twedit.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/upload.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/upload.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/browser-messaging.js": {
            "text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t  iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\tconsole.log(\"browser-messaging: \",document.location.toString())\n\t\tconsole.log(\"browser-messaging: Received message from\",event.origin);\n\t\tconsole.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
            "title": "$:/core/modules/browser-messaging.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/commands.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
            "title": "$:/core/modules/startup/commands.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/favicon.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\n\t}\n}\n\n})();\n",
            "title": "$:/core/modules/startup/favicon.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/info.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin\n\tvar fields = {\n\t\ttitle: \"$:/temp/info-plugin\",\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo();\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
            "title": "$:/core/modules/startup/info.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/load-modules.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
            "title": "$:/core/modules/startup/load-modules.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/password.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
            "title": "$:/core/modules/startup/password.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/render.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar DRAFT_TIDDLER_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n\t})();\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only drafts have changed\n\t\tvar onlyDraftsHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !tiddler.hasField(\"draft.of\")) {\n\t\t\t\tonlyDraftsHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyDraftsHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = DRAFT_TIDDLER_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
            "title": "$:/core/modules/startup/render.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/rootwidget.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the notification  mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tif(document[fullscreen._fullscreenElement]) {\n\t\t\t\tdocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tdocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/startup/rootwidget.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.appVersion);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-US\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget = new widget.widget({\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},{\n\t\t\twiki: $tw.wiki,\n\t\t\tdocument: document\n\t\t});\n\t}\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t} \n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({wiki: $tw.wiki, dirtyTracking: !$tw.syncadaptor});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/startup.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/story.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers();\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permalink\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permaview\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// If a target tiddler was specified add it to the history stack\n\tif(target && target !== \"\") {\n\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t}\n\t\t$tw.wiki.addToHistory(target);\n\t} else if(storyList.length > 0) {\n\t\t$tw.wiki.addToHistory(storyList[0]);\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\tif(options.updateAddressBar !== \"no\") {\n\t\t// Get the story and the history stack\n\t\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\t\ttargetTiddler = \"\";\n\t\tif(options.targetTiddler) {\n\t\t\ttargetTiddler = options.targetTiddler;\n\t\t} else {\n\t\t\t// The target tiddler is the one at the top of the stack\n\t\t\tif(historyList.length > 0) {\n\t\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t\t}\n\t\t\t// Blank the target tiddler if it isn't present in the story\n\t\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\t\ttargetTiddler = \"\";\n\t\t\t}\n\t\t}\n\t\t// Assemble the location hash\n\t\tif(options.updateAddressBar === \"permalink\") {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t} else {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t}\n\t\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\t\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\t\tif(options.updateHistory === \"yes\") {\n\t\t\t\t// Assign the location hash so that history is updated\n\t\t\t\twindow.location.hash = $tw.locationHash;\n\t\t\t} else {\n\t\t\t\t// We use replace so that browser history isn't affected\n\t\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t\t}\n\t\t}\n\t}\n}\n\n})();\n",
            "title": "$:/core/modules/startup/story.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/windows.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\nvar windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\twindows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = title;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each(windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
            "title": "$:/core/modules/startup/windows.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/story.js": {
            "text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
            "title": "$:/core/modules/story.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/storyviews/classic.js": {
            "text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar currWidth = targetElement.offsetWidth,\n\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Remove the dom nodes of the widget at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"translateX(0px)\"},\n\t\t{marginBottom:  currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
            "title": "$:/core/modules/storyviews/classic.js",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/pop.js": {
            "text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
            "title": "$:/core/modules/storyviews/pop.js",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/zoomin.js": {
            "text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx =  zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty =  zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
            "title": "$:/core/modules/storyviews/zoomin.js",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/syncer.js": {
            "text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store. If a syncadaptor is used then individual tiddlers are synchronised through it. If there is no syncadaptor then the entire wiki is saved via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || this.throttleInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || this.pollTimerInterval;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"));\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\t// Tasks are {type: \"load\"/\"save\"/\"delete\", title:, queueTime:, lastModificationTime:}\n\tthis.taskQueue = {}; // Hashmap of tasks yet to be performed\n\tthis.taskInProgress = {}; // Hash of tasks in progress\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.syncToServer(changes);\n\t});\n\t// Browser event handlers\n\tif($tw.browser) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\tself.handleLazyLoadEvent(title);\n\t});\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.filterFn.call(this.wiki);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: tiddler.fields.revision,\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title),\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t});\n};\n\n/*\nCreate an tiddlerInfo structure if it doesn't already exist\n*/\nSyncer.prototype.createTiddlerInfo = function(title) {\n\tif(!$tw.utils.hop(this.tiddlerInfo,title)) {\n\t\tthis.tiddlerInfo[title] = {\n\t\t\trevision: null,\n\t\t\tadaptorInfo: {},\n\t\t\tchangeCount: -1,\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t}\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\treturn (this.numTasksInQueue() > 0) || (this.numTasksInProgress() > 0);\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields,hasBeenLazyLoaded) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(this.wiki.getTiddler(tiddlerFields.title),tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: tiddlerFields.revision,\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title),\n\t\thasBeenLazyLoaded: hasBeenLazyLoaded !== undefined ? hasBeenLazyLoaded : true\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Set the various status tiddlers\n\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\tif(isLoggedIn) {\n\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t} else {\n\t\t\t\tself.wiki.deleteTiddler(self.titleUserName);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tif(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tvar self = this;\n\t\tif(this.pollTimerId) {\n\t\t\tclearTimeout(this.pollTimerId);\n\t\t\tthis.pollTimerId = null;\n\t\t}\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\t// Trigger the next sync\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert($tw.language.getString(\"Error/RetrievingSkinny\") + \":\",err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null;\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Do a full load if we've already got a fat version of the tiddler\n\t\t\t\t\tif(tiddler && tiddler.fields.text !== undefined) {\n\t\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\t\tself.enqueueSyncTask({\n\t\t\t\t\t\t\ttype: \"load\",\n\t\t\t\t\t\t\ttitle: tiddlerFields.title\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Load the skinny version of the tiddler\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields,false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nSynchronise a set of changes to the server\n*/\nSyncer.prototype.syncToServer = function(changes) {\n\tvar self = this,\n\t\tnow = Date.now(),\n\t\tfilteredChanges = this.filterFn.call(this.wiki,function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t$tw.utils.each(changes,function(change,title,object) {\n\t\t// Process the change if it is a deletion of a tiddler we're already syncing, or is on the filtered change list\n\t\tif((change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) || filteredChanges.indexOf(title) !== -1) {\n\t\t\t// Queue a task to sync this tiddler\n\t\t\tself.enqueueSyncTask({\n\t\t\t\ttype: change.deleted ? \"delete\" : \"save\",\n\t\t\t\ttitle: title\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Don't lazy load the same tiddler twice\n\tvar info = this.tiddlerInfo[title];\n\tif(!info || !info.hasBeenLazyLoaded) {\n\t\tthis.createTiddlerInfo(title);\n\t\tthis.tiddlerInfo[title].hasBeenLazyLoaded = true;\n\t\t// Queue up a sync task to load this tiddler\n\t\tthis.enqueueSyncTask({\n\t\t\ttype: \"load\",\n\t\t\ttitle: title\n\t\t});\t\t\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(null,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nQueue up a sync task. If there is already a pending task for the tiddler, just update the last modification time\n*/\nSyncer.prototype.enqueueSyncTask = function(task) {\n\tvar self = this,\n\t\tnow = Date.now();\n\t// Set the timestamps on this task\n\ttask.queueTime = now;\n\ttask.lastModificationTime = now;\n\t// Fill in some tiddlerInfo if the tiddler is one we haven't seen before\n\tthis.createTiddlerInfo(task.title);\n\t// Bail if this is a save and the tiddler is already at the changeCount that the server has\n\tif(task.type === \"save\" && this.wiki.getChangeCount(task.title) <= this.tiddlerInfo[task.title].changeCount) {\n\t\treturn;\n\t}\n\t// Check if this tiddler is already in the queue\n\tif($tw.utils.hop(this.taskQueue,task.title)) {\n\t\t// this.logger.log(\"Re-queueing up sync task with type:\",task.type,\"title:\",task.title);\n\t\tvar existingTask = this.taskQueue[task.title];\n\t\t// If so, just update the last modification time\n\t\texistingTask.lastModificationTime = task.lastModificationTime;\n\t\t// If the new task is a save then we upgrade the existing task to a save. Thus a pending load is turned into a save if the tiddler changes locally in the meantime. But a pending save is not modified to become a load\n\t\tif(task.type === \"save\" || task.type === \"delete\") {\n\t\t\texistingTask.type = task.type;\n\t\t}\n\t} else {\n\t\t// this.logger.log(\"Queuing up sync task with type:\",task.type,\"title:\",task.title);\n\t\t// If it is not in the queue, insert it\n\t\tthis.taskQueue[task.title] = task;\n\t\tthis.updateDirtyStatus();\n\t}\n\t// Process the queue\n\t$tw.utils.nextTick(function() {self.processTaskQueue.call(self);});\n};\n\n/*\nReturn the number of tasks in progress\n*/\nSyncer.prototype.numTasksInProgress = function() {\n\treturn $tw.utils.count(this.taskInProgress);\n};\n\n/*\nReturn the number of tasks in the queue\n*/\nSyncer.prototype.numTasksInQueue = function() {\n\treturn $tw.utils.count(this.taskQueue);\n};\n\n/*\nTrigger a timeout if one isn't already outstanding\n*/\nSyncer.prototype.triggerTimeout = function() {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},self.taskTimerInterval);\n\t}\n};\n\n/*\nProcess the task queue, performing the next task if appropriate\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress() === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(task) {\n\t\t\t// Remove the task from the queue and add it to the in progress list\n\t\t\tdelete this.taskQueue[task.title];\n\t\t\tthis.taskInProgress[task.title] = task;\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// Dispatch the task\n\t\t\tthis.dispatchTask(task,function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\tself.logger.alert(\"Sync error while processing '\" + task.title + \"':\\n\" + err);\n\t\t\t\t}\n\t\t\t\t// Mark that this task is no longer in progress\n\t\t\t\tdelete self.taskInProgress[task.title];\n\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t// Process the next task\n\t\t\t\tself.processTaskQueue.call(self);\n\t\t\t});\n\t\t} else {\n\t\t\t// Make sure we've set a time if there wasn't a task to perform, but we've still got tasks in the queue\n\t\t\tif(this.numTasksInQueue() > 0) {\n\t\t\t\tthis.triggerTimeout();\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nChoose the next applicable task\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar self = this,\n\t\tcandidateTask = null,\n\t\tnow = Date.now();\n\t// Select the best candidate task\n\t$tw.utils.each(this.taskQueue,function(task,title) {\n\t\t// Exclude the task if there's one of the same name in progress\n\t\tif($tw.utils.hop(self.taskInProgress,title)) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is a save and the tiddler has been modified recently, but not hit the fallback time\n\t\tif(task.type === \"save\" && (now - task.lastModificationTime) < self.throttleInterval &&\n\t\t\t(now - task.queueTime) < self.fallbackInterval) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is newer than the current best candidate\n\t\tif(candidateTask && candidateTask.queueTime < task.queueTime) {\n\t\t\treturn;\n\t\t}\n\t\t// Now this is our best candidate\n\t\tcandidateTask = task;\n\t});\n\treturn candidateTask;\n};\n\n/*\nDispatch a task and invoke the callback\n*/\nSyncer.prototype.dispatchTask = function(task,callback) {\n\tvar self = this;\n\tif(task.type === \"save\") {\n\t\tvar changeCount = this.wiki.getChangeCount(task.title),\n\t\t\ttiddler = this.wiki.getTiddler(task.title);\n\t\tthis.logger.log(\"Dispatching 'save' task:\",task.title);\n\t\tif(tiddler) {\n\t\t\tthis.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\t// Adjust the info stored about this tiddler\n\t\t\t\tself.tiddlerInfo[task.title] = {\n\t\t\t\t\tchangeCount: changeCount,\n\t\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\t\trevision: revision\n\t\t\t\t};\n\t\t\t\t// Invoke the callback\n\t\t\t\tcallback(null);\n\t\t\t},{\n\t\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t\t});\n\t\t} else {\n\t\t\tthis.logger.log(\" Not Dispatching 'save' task:\",task.title,\"tiddler does not exist\");\n\t\t\treturn callback(null);\n\t\t}\n\t} else if(task.type === \"load\") {\n\t\t// Load the tiddler\n\t\tthis.logger.log(\"Dispatching 'load' task:\",task.title);\n\t\tthis.syncadaptor.loadTiddler(task.title,function(err,tiddlerFields) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Store the tiddler\n\t\t\tif(tiddlerFields) {\n\t\t\t\tself.storeTiddler(tiddlerFields,true);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else if(task.type === \"delete\") {\n\t\t// Delete the tiddler\n\t\tthis.logger.log(\"Dispatching 'delete' task:\",task.title);\n\t\tthis.syncadaptor.deleteTiddler(task.title,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tdelete self.tiddlerInfo[task.title];\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t});\n\t}\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
            "title": "$:/core/modules/syncer.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/tiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = [];\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields.push(field + \": \" + this.getFieldString(field));\n\t\t\t}\n\t\t}\n\t}\n\treturn fields.join(\"\\n\");\n};\n\n/*\nCompare two tiddlers for equality\ntiddler: the tiddler to compare\nexcludeFields: array of field names to exclude from the comparison\n*/\nexports.isEqual = function(tiddler,excludeFields) {\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\treturn false;\n\t}\n\texcludeFields = excludeFields || [];\n\tvar self = this,\n\t\tdifferences = []; // Fields that have differences\n\t// Add to the differences array\n\tfunction addDifference(fieldName) {\n\t\t// Check for this field being excluded\n\t\tif(excludeFields.indexOf(fieldName) === -1) {\n\t\t\t// Save the field as a difference\n\t\t\t$tw.utils.pushTop(differences,fieldName);\n\t\t}\n\t}\n\t// Returns true if the two values of this field are equal\n\tfunction isFieldValueEqual(fieldName) {\n\t\tvar valueA = self.fields[fieldName],\n\t\t\tvalueB = tiddler.fields[fieldName];\n\t\t// Check for identical string values\n\t\tif(typeof(valueA) === \"string\" && typeof(valueB) === \"string\" && valueA === valueB) {\n\t\t\treturn true;\n\t\t}\n\t\t// Check for identical array values\n\t\tif($tw.utils.isArray(valueA) && $tw.utils.isArray(valueB) && $tw.utils.isArrayEqual(valueA,valueB)) {\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise the fields must be different\n\t\treturn false;\n\t}\n\t// Compare our fields\n\tfor(var fieldName in this.fields) {\n\t\tif(!isFieldValueEqual(fieldName)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// There's a difference for every field in the other tiddler that we don't have\n\tfor(fieldName in tiddler.fields) {\n\t\tif(!(fieldName in this.fields)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// Return whether there were any differences\n\treturn differences.length === 0;\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
            "title": "$:/core/modules/tiddler.js",
            "type": "application/javascript",
            "module-type": "tiddlermethod"
        },
        "$:/core/modules/upgraders/plugins.js": {
            "text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"] && incomingTiddler.version) {\n\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "title": "$:/core/modules/upgraders/plugins.js",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/system.js": {
            "text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "title": "$:/core/modules/upgraders/system.js",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/themetweaks.js": {
            "text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "title": "$:/core/modules/upgraders/themetweaks.js",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/utils/crypto.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/utils/crypto.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/animations/slide.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom/animations/slide.js",
            "type": "application/javascript",
            "module-type": "animation"
        },
        "$:/core/modules/utils/dom/animator.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/animator.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/browser.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom/browser.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/csscolorparser.js": {
            "text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n  \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n  \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n  \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n  \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n  \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n  \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n  \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n  \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n  \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n  \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n  \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n  \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n  \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n  \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n  \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n  \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n  \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n  \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n  \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n  \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n  \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n  \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n  \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n  \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n  \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n  \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n  \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n  \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n  \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n  \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n  \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n  \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n  \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n  \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n  \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n  \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n  \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n  \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n  \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n  \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n  \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n  \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n  \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n  \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n  \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n  \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n  \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n  \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n  \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n  \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n  \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n  \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n  \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n  \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n  \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n  \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n  \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n  \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n  \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n  \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n  \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n  \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n  \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n  \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n  \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n  \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n  \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n  \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n  \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n  \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n  \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n  \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n  \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n  \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) {  // Clamp to integer 0 .. 255.\n  i = Math.round(i);  // Seems to be what Chrome does (vs truncation).\n  return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) {  // Clamp to float 0.0 .. 1.0.\n  return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) {  // int or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_byte(parseFloat(str) / 100 * 255);\n  return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) {  // float or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_float(parseFloat(str) / 100);\n  return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n  if (h < 0) h += 1;\n  else if (h > 1) h -= 1;\n\n  if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n  if (h * 2 < 1) return m2;\n  if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n  return m1;\n}\n\nfunction parseCSSColor(css_str) {\n  // Remove all whitespace, not compliant, but should just be more accepting.\n  var str = css_str.replace(/ /g, '').toLowerCase();\n\n  // Color keywords (and transparent) lookup.\n  if (str in kCSSColorTable) return kCSSColorTable[str].slice();  // dup.\n\n  // #abc and #abc123 syntax.\n  if (str[0] === '#') {\n    if (str.length === 4) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xfff)) return null;  // Covers NaN.\n      return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n              (iv & 0xf0) | ((iv & 0xf0) >> 4),\n              (iv & 0xf) | ((iv & 0xf) << 4),\n              1];\n    } else if (str.length === 7) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xffffff)) return null;  // Covers NaN.\n      return [(iv & 0xff0000) >> 16,\n              (iv & 0xff00) >> 8,\n              iv & 0xff,\n              1];\n    }\n\n    return null;\n  }\n\n  var op = str.indexOf('('), ep = str.indexOf(')');\n  if (op !== -1 && ep + 1 === str.length) {\n    var fname = str.substr(0, op);\n    var params = str.substr(op+1, ep-(op+1)).split(',');\n    var alpha = 1;  // To allow case fallthrough.\n    switch (fname) {\n      case 'rgba':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'rgb':\n        if (params.length !== 3) return null;\n        return [parse_css_int(params[0]),\n                parse_css_int(params[1]),\n                parse_css_int(params[2]),\n                alpha];\n      case 'hsla':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'hsl':\n        if (params.length !== 3) return null;\n        var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360;  // 0 .. 1\n        // NOTE(deanm): According to the CSS spec s/l should only be\n        // percentages, but we don't bother and let float or percentage.\n        var s = parse_css_float(params[1]);\n        var l = parse_css_float(params[2]);\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n        var m1 = l * 2 - m2;\n        return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n                alpha];\n      default:\n        return null;\n    }\n  }\n\n  return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
            "title": "$:/core/modules/utils/dom/csscolorparser.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t}\n\tel.className = c.join(\" \");\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function() {\n\tif(\"scrollX\" in window) {\n\t\treturn {x: window.scrollX, y: window.scrollY};\n\t} else {\n\t\treturn {x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n    // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight;\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\ttry {\n\t\tif(window.localStorage) {\n\t\t\tlocalStorage.setItem(\"tw5-password-\" + name,password);\n\t\t}\n\t} catch(e) {\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\ttry {\n\t\treturn window.localStorage ? localStorage.getItem(\"tw5-password-\" + name) : \"\";\n\t} catch(e) {\n\t\treturn \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/dragndrop.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [];\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom/dragndrop.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/http.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tdata = results.join(\"&\");\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,options.url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e);\n\t}\n\treturn request;\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom/http.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/keyboard.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
            "title": "$:/core/modules/utils/dom/keyboard.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/modal.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = document.createElement(\"div\"),\n\t\tmodalBackdrop = document.createElement(\"div\"),\n\t\tmodalWrapper = document.createElement(\"div\"),\n\t\tmodalHeader = document.createElement(\"div\"),\n\t\theaderTitle = document.createElement(\"h3\"),\n\t\tmodalBody = document.createElement(\"div\"),\n\t\tmodalLink = document.createElement(\"a\"),\n\t\tmodalFooter = document.createElement(\"div\"),\n\t\tmodalFooterHelp = document.createElement(\"span\"),\n\t\tmodalFooterButtons = document.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(document.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler && tiddler.fields && tiddler.fields.help) {\n\t\tvar link = document.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(document.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + window.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\twindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tdocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tdocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tif($tw.pageContainer) {\n\t\t$tw.utils.toggleClass($tw.pageContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/modal.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/notifier.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/notifier.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/popup.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\t// Store the popup details if not already there\n\tif(this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode\n\t\t});\n\t}\n\t// Set the state tiddler\n\toptions.wiki.setTextReference(options.title,\n\t\t\t\"(\" + options.domNode.offsetLeft + \",\" + options.domNode.offsetTop + \",\" + \n\t\t\t\toptions.domNode.offsetWidth + \",\" + options.domNode.offsetHeight + \")\");\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/popup.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/scroller.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\t// Now get ready to scroll the body\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = $tw.utils.getScrollPosition();\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar clientBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\ttop: clientBounds.top + scrollPosition.y,\n\t\t\twidth: clientBounds.width,\n\t\t\theight: clientBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t// targetPos/targetSize - position and size of the target element\n\t// currentPos/currentSize - position and size of the current scroll viewport\n\t// returns: new position of the scroll viewport\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to it's top/left\n\t\t\tif(targetPos <= currentPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\tnewPos = targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\tnewPos = currentPos;\n\t\t\t}\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,window.innerWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,window.innerHeight);\n\t// Only scroll if the position has changed\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\twindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/scroller.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/edition-info.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
            "title": "$:/core/modules/utils/edition-info.js",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/fakedom.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis.style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this.style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this.style) {\n\t\t\t\tstyle.push(s + \":\" + this.style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\")\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\tconsole.log(booboo)\n\t\t\t\tthrow \"Cannot get textContent on a raw TW_Element\";\t\t\t\t\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tthrow \"Cannot get formattedTextContent on a raw TW_Element\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
            "title": "$:/core/modules/utils/fakedom.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/filesystem.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = new Buffer(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n})();\n",
            "title": "$:/core/modules/utils/filesystem.js",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/logger.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName) {\n\tthis.componentName = componentName || \"\";\n}\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tif(console !== undefined && console.log !== undefined) {\n\t\treturn Function.apply.call(console.log, console, [this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)));\n\t}\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\t// Prepare the text of the alert\n\tvar text = Array.prototype.join.call(arguments,\" \");\n\t// Create alert tiddlers in the browser\n\tif($tw.browser) {\n\t\t// Check if there is an existing alert with the same text and the same component\n\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\talertFields,\n\t\t\texistingCount,\n\t\t\tself = this;\n\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t}\n\t\t});\n\t\tif(alertFields) {\n\t\t\texistingCount = alertFields.count || 1;\n\t\t} else {\n\t\t\talertFields = {\n\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\ttext: text,\n\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\tcomponent: this.componentName\n\t\t\t};\n\t\t\texistingCount = 0;\n\t\t}\n\t\talertFields.modified = new Date();\n\t\tif(++existingCount > 1) {\n\t\t\talertFields.count = existingCount;\n\t\t} else {\n\t\t\talertFields.count = undefined;\n\t\t}\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t// Log the alert as well\n\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t} else {\n\t\t// Print an orange message to the console if not in the browser\n\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
            "title": "$:/core/modules/utils/logger.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/parsetree.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
            "title": "$:/core/modules/utils/parsetree.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/performance.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap of current values of measurements\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n}\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tself.measures = {};\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\tfor(var m in self.measures) {\n\t\t\t\tself.logger.log(\"+\" + m + \": \" + self.measures[m].toFixed(2) + \"ms\");\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments),\n\t\t\t\tvalue = self.measures[name] || 0;\n\t\t\tself.measures[name] = value + $tw.utils.timer(startTime);\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
            "title": "$:/core/modules/utils/performance.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/pluginmaker.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
            "title": "$:/core/modules/utils/pluginmaker.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/utils.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\tconsole.log($tw.node ? \"\\x1b[1;33m\" + text + \"\\x1b[0m\" : text);\n};\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nCheck if an array is equal by value and by reference.\n*/\nexports.isArrayEqual = function(array1,array2) {\n\tif(array1 === array2) {\n\t\treturn true;\n\t}\n\tarray1 = array1 || [];\n\tarray2 = array2 || [];\n\tif(array1.length !== array2.length) {\n\t\treturn false;\n\t}\n\treturn array1.every(function(value,index) {\n\t\treturn value === array2[index];\n\t});\n};\n\n/*\nPush entries onto an array, removing them first if they already exist in the array\n\tarray: array to modify (assumed to be free of duplicates)\n\tvalue: a single value to push or an array of values to push\n*/\nexports.pushTop = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\t// Remove any array entries that are duplicated in the new values\n\t\tif(value.length !== 0) {\n\t\t\tif(array.length !== 0) {\n\t\t\t\tif(value.length < array.length) {\n\t\t\t\t\tfor(t=0; t<value.length; t++) {\n\t\t\t\t\t\tp = array.indexOf(value[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(p,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor(t=array.length-1; t>=0; t--) {\n\t\t\t\t\t\tp = value.indexOf(array[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(t,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Push the values on top of the main array\n\t\t\tarray.push.apply(array,value);\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t\tarray.push(value);\n\t}\n\treturn array;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\",   duration:      365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\",  duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\",    duration:            24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\",   duration:                 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration:                      60 * 1000},\n\t\t{name: \"Seconds\", duration:                           1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&amp;\", < to \"&lt;\", > to \"&gt;\", \" to \"&quot;\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&amp;\").replace(/</mg,\"&lt;\").replace(/>/mg,\"&gt;\").replace(/\\\"/mg,\"&quot;\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2); // Strip the & and the ;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\treturn converter(parseInt(e.substr(2),16));\t\n\t\t} else {\n\t\t\treturn converter(parseInt(e.substr(1),10));\n\t\t}\n\t} else {\n\t\tvar c = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/'/g, \"\\\\'\")              // single quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(/[\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n    return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10);\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\tif($tw.browser) {\n\t\t// TODO\n\t\tthrow \"$tw.utils.base64Decode() doesn't work in the browser\";\n\t} else {\n\t\treturn (new Buffer(string64,\"base64\")).toString();\n\t}\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\t\t\n\t\tm =  r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tparts.push(\"data:\");\n\tparts.push(type);\n\tparts.push(isBase64 ? \";base64\" : \"\");\n\tparts.push(\",\");\n\tparts.push(isBase64 ? text : encodeURIComponent(text));\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nTransliterate string from eg. Cyrillic Russian to Latin\n*/\nvar transliterationPairs = {\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.split(\"\").map(function(char) {\n\t\treturn transliterationPairs[char] || char;\n\t}).join(\"\");\n};\n\n})();\n",
            "title": "$:/core/modules/utils/utils.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/widgets/action-createtiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.generateNewTitle(this.actionBaseTitle),\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-createtiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletefield.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-deletefield.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletetiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-deletetiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-listops.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-listops.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-navigate.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-navigate.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-sendmessage.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-sendmessage.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-setfield.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\")  || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-setfield.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/browse.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\t// Nw.js supports \"webkitdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,function(tiddlerFieldsArray) {\n\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/browse.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/button.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = this.popup && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif(this.set && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(this,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n    return this.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\t$tw.popup.triggerPopup({\n\t\tdomNode: this.domNodes[0],\n\t\ttitle: this.popup,\n\t\twiki: this.wiki\n\t});\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup])) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/button.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/checkbox.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();",
            "title": "$:/core/modules/widgets/checkbox.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/codeblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/codeblock.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/count.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = undefined;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/count.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/draggable.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedTiddlers.tag || changedTiddlers[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/draggable.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/droppable.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t]);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent  = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableClass = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/droppable.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/dropzone.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = \"tc-dropzone\";\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"}\n\t]);\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent  = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),function(fieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(fieldsArray)});\n\t\t});\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent  = function(event) {\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/dropzone.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-binary.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Construct the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"transclude\",\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t}\n\t}]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/edit-binary.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-bitmap.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370;\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\tif(tiddler) {\n\t\t// data URIs look like \"data:<type>;base64,<text>\"\n\t\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\t\tposColon = dataURL.indexOf(\":\"),\n\t\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\t\tposComma = dataURL.indexOf(\",\"),\n\t\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\t\ttext = dataURL.substring(posComma+1);\n\t\tvar update = {type: type, text: text};\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n\t}\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/edit-bitmap.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-shortcut.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/edit-shortcut.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-text.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
            "title": "$:/core/modules/widgets/edit-text.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder}\n\t\t},\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/edit.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/element.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/element.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/encrypt.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/encrypt.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/entity.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/entity.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fieldmangler.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle);\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tvar modification = this.wiki.getModificationFields();\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle);\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tvar modification = this.wiki.getModificationFields();\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler({title: this.mangleTitle, tags: tag});\t\t\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/fieldmangler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fields.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t// Get the exclusion list\n\tvar exclude;\n\tif(this.exclude) {\n\t\texclude = this.exclude.split(\" \");\n\t} else {\n\t\texclude = [\"text\"]; \n\t}\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tfields.push(fieldName);\n\t\t\t}\n\t\t}\n\t\tfields.sort();\n\t\tfor(var f=0; f<fields.length; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tvar row = this.template,\n\t\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\t\tif(reMatch) {\n\t\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\t\ttext.push(row);\n\t\t\t}\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude || changedAttributes.stripTitlePrefix || changedTiddlers[this.tiddlerTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/fields.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/image.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/image.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/importvariables.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar self = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\tvar widgetStackStart,widgetStackEnd;\n\tfunction addWidgetNode(widgetNode) {\n\t\tif(widgetNode) {\n\t\t\tif(!widgetStackStart && !widgetStackEnd) {\n\t\t\t\twidgetStackStart = widgetNode;\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t} else {\n\t\t\t\twidgetStackEnd.children = [widgetNode];\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t}\n\t\t}\n\t}\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = self.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\taddWidgetNode({\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params\n\t\t\t\t});\n\t\t\t\tparseTreeNode = parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\t// Add our own children to the end of the pile\n\tvar parseTreeNodes;\n\tif(widgetStackStart && widgetStackEnd) {\n\t\tparseTreeNodes = [widgetStackStart];\n\t\twidgetStackEnd.children = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/importvariables.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/keyboard.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tself.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.key = this.getAttribute(\"key\");\n\tthis.tag = this.getAttribute(\"tag\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/keyboard.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/link.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar MISSING_LINK_CONFIG_TITLE = \"$:/config/MissingLinks\";\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.linkClasses) {\n\t\tclasses.push(this.linkClasses);\n\t}\n\tclasses.push(\"tc-tiddlylink\");\n\tif(this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t}\n\tif(this.isMissing && !this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t} else {\n\t\tif(!this.isMissing) {\n\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t}\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Set an href\n\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\",\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tdomNode.setAttribute(\"href\",wikiLinkText);\n\t}\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = ($tw.wiki.getTiddlerText(MISSING_LINK_CONFIG_TITLE,\"yes\") === \"no\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip || changedTiddlers[MISSING_LINK_CONFIG_TITLE]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/link.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/linkcatcher.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(this.catchTo) {\n\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.catchMessage && this.parentWidget) {\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: this.catchMessage,\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\tif(this.catchSet) {\n\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t}\n\tif(this.catchActions) {\n\t\tthis.invokeActionString(this.catchActions,this);\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/linkcatcher.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/list.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
            "title": "$:/core/modules/widgets/list.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/macrocall.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar text = this.getVariable(this.parseTreeNode.name || this.getAttribute(\"$name\"),{params: params}),\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/macrocall.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/navigator.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList}\n\t));\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tvar p = storyList.indexOf(title);\n\twhile(p !== -1) {\n\t\tstoryList.splice(p,1);\n\t\tp = storyList.indexOf(title);\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tvar pos = storyList.indexOf(oldTitle);\n\tif(pos !== -1) {\n\t\tstoryList[pos] = newTitle;\n\t\tdo {\n\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\tif(pos !== -1) {\n\t\t\t\tstoryList.splice(pos,1);\n\t\t\t}\n\t\t} while(pos !== -1);\n\t} else {\n\t\tstoryList.splice(0,0,newTitle);\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tvar storyList = this.getStoryList();\n\t// Quit if we cannot get hold of the story list\n\tif(!storyList) {\n\t\treturn;\n\t}\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(title);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(fromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(this.getAttribute(\"openLinkFromInsideRiver\",\"below\")) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,title);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle;\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\";\n\t\tc++;\n\t} while(this.wiki.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\texistingTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\t\t\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\t\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n// \nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\t$tw.wiki.renameTiddler(from,to);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/navigator.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/password.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/password.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/radio.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.radioClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(this.getValue() == this.radioValue) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tif(this.radioClass !== \"\") {\n\t\tthis.radioClass += \" \";\n\t}\n\tthis.radioClass += \"tc-radio\";\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/radio.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/raw.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/raw.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/reveal.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tdomNode.style.left = (this.popup.left - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTitle = this.state;\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state = this.stateTitle ? this.wiki.getTextReference(this.stateTitle,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.readMatchState(state);\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.readMatchState(state);\n\t\t\tthis.isOpen = !this.isOpen;\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.readMatchState = function(state) {\n\tthis.isOpen = state === this.text;\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes[\"default\"] || changedAttributes.animate) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false,\n\t\t\tcurrentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\trefreshed = true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n        $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n        }});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/reveal.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/scrollable.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/scrollable.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/select.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tif(values.indexOf(select.children[i].value) != -1) {\n\t\t\t\tselect.children[i].selected = true;\n\t\t\t}\n\t\t}\n\t\t\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/select.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/set.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(!this.setValue) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select ||changedAttributes.value || changedAttributes.emptyValue ||\n\t   (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/set.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/text.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/text.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/tiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/tiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/transclude.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/transclude.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/vars.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n  <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/vars.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/view.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified();\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified();\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified();\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function() {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function() {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function() {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/view.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/widget.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tif(arguments.length > 0) {\n\t\tthis.initialise(parseTreeNode,options);\n\t}\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\n*/\nWidget.prototype.setVariable = function(name,value,params) {\n\tthis.variables[name] = {value: value, params: params};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n*/\nWidget.prototype.getVariable = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value;\n\t\t// Substitute any parameters specified in the definition\n\t\tvalue = this.substituteVariableParameters(value,variable.params,actualParams);\n\t\tvalue = this.substituteVariableReferences(value);\n\t\treturn value;\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn this.evaluateMacroModule(name,actualParams,options.defaultValue);\n};\n\nWidget.prototype.substituteVariableParameters = function(text,formalParams,actualParams) {\n\tif(formalParams) {\n\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\tparamInfo, paramValue;\n\t\t// Step through each of the parameters in the macro definition\n\t\tfor(var p=0; p<formalParams.length; p++) {\n\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\tparamInfo = formalParams[p];\n\t\t\tparamValue = undefined;\n\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\tnextAnonParameter++;\n\t\t\t}\n\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t}\n\t\t\t// If we've still not got a value, use the default, if any\n\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t// Replace any instances of this parameter\n\t\t\ttext = $tw.utils.replaceString(text,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(paramInfo.name) + \"\\\\$\",\"mg\"),paramValue);\n\t\t}\n\t}\n\treturn text;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.render(parent,nextSibling);\n\t});\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar self = this,\n\t\trefreshed = false;\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\trefreshed = childWidget.refresh(changedTiddlers) || refreshed;\n\t});\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
            "title": "$:/core/modules/widgets/widget.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/wikify.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/wikify.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/wiki-bulkops.js": {
            "text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = (tiddler.fields.tags || []).slice(0),\n\t\t\t\t\tlist = (tiddler.fields.list || []).slice(0),\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
            "title": "$:/core/modules/wiki-bulkops.js",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/wiki.js": {
            "text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type]  || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles.  Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x :  x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\t// Count up the links\n\t\tvar links = [],\n\t\t\tcheckParseTree = function(parseTree) {\n\t\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\tif(parser) {\n\t\t\tcheckParseTree(parser.tree);\n\t\t}\n\t\treturn links;\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinks = [];\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\tbacklinks.push(title);\n\t\t}\n\t});\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\tvar self = this;\n\treturn this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\tvar tagmap = self.getTagMap();\n\t\treturn self.sortByList(tagmap[tag],tag);\n\t});\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tvar currPos = titles.indexOf(title),\n\t\t\t\tnewPos = -1,\n\t\t\t\ttiddler = this.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(newPos === -1) {\n\t\t\t\t\tnewPos = currPos;\n\t\t\t\t}\n\t\t\t\tif(newPos !== currPos) {\n\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t}\n\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type || \"text/vnd.tiddlywiki\",tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title}},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn $tw.wiki.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tliteral: If true, searches for literal string, rather than separate search terms\n\tfield: If specified, restricts the search to the specified field\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tmatch;\n\t\tfor(var t=0; t<searchTermsRegExps.length; t++) {\n\t\t\tmatch = false;\n\t\t\tif(options.field) {\n\t\t\t\tmatch = searchTermsRegExps[t].test(tiddler.getFieldString(options.field));\n\t\t\t} else {\n\t\t\t\t// Search title, tags and body\n\t\t\t\tif(contentTypeInfo.encoding === \"utf8\") {\n\t\t\t\t\tmatch = match || searchTermsRegExps[t].test(tiddler.fields.text);\n\t\t\t\t}\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.join(\"\\0\") : \"\";\n\t\t\t\tmatch = match || searchTermsRegExps[t].test(tags) || searchTermsRegExps[t].test(tiddler.fields.title);\n\t\t\t}\n\t\t\tif(!match) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(tiddler.fields.text !== undefined) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text;\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,callback) {\n\tvar result = [],\n\t\toutstanding = files.length;\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t});\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,callback) {\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create  a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n})();\n\n",
            "title": "$:/core/modules/wiki.js",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/palettes/Blanca": {
            "title": "$:/palettes/Blanca",
            "name": "Blanca",
            "description": "A clean white palette to let you focus",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Blue": {
            "title": "$:/palettes/Blue",
            "name": "Blue",
            "description": "A blue theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Muted": {
            "title": "$:/palettes/Muted",
            "name": "Muted",
            "description": "Bright tiddlers on a muted background",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastLight": {
            "title": "$:/palettes/ContrastLight",
            "name": "Contrast (Light)",
            "description": "High contrast and unambiguous (light version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastDark": {
            "title": "$:/palettes/ContrastDark",
            "name": "Contrast (Dark)",
            "description": "High contrast and unambiguous (dark version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/DarkPhotos": {
            "created": "20150402111612188",
            "description": "Good with dark photo backgrounds",
            "modified": "20150402112344080",
            "name": "DarkPhotos",
            "tags": "$:/tags/Palette",
            "title": "$:/palettes/DarkPhotos",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Rocker": {
            "title": "$:/palettes/Rocker",
            "name": "Rocker",
            "description": "A dark theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarFlare": {
            "title": "$:/palettes/SolarFlare",
            "name": "Solar Flare",
            "description": "Warm, relaxing earth colours",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n    download-foreground: <<colour background>>\n    dragger-foreground: <<colour background>>\n    dropdown-background: <<colour background>>\n    modal-background: <<colour background>>\n    sidebar-foreground-shadow: <<colour background>>\n    tiddler-background: <<colour background>>\n    tiddler-border: <<colour background>>\n    tiddler-link-background: <<colour background>>\n    tab-background-selected: <<colour background>>\n        dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n    dragger-background: <<colour foreground>>\n    tab-foreground: <<colour foreground>>\n        tab-foreground-selected: <<colour tab-foreground>>\n            sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n        sidebar-tab-foreground: <<colour tab-foreground>>\n    sidebar-button-foreground: <<colour foreground>>\n    sidebar-controls-foreground: <<colour foreground>>\n    sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n    alert-muted-foreground: <<colour base01>>\n: base00\n    code-foreground: <<colour base00>>\n    message-foreground: <<colour base00>>\n    tag-foreground: <<colour base00>>\n: base0\n    sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n    muted-foreground: <<colour base1>>\n        blockquote-bar: <<colour muted-foreground>>\n        dropdown-border: <<colour muted-foreground>>\n        sidebar-muted-foreground: <<colour muted-foreground>>\n        tiddler-title-foreground: <<colour muted-foreground>>\n            site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n    modal-footer-background: <<colour base2>>\n    page-background: <<colour base2>>\n        modal-backdrop: <<colour page-background>>\n        notification-background: <<colour page-background>>\n        code-background: <<colour page-background>>\n            code-border: <<colour code-background>>\n        pre-background: <<colour page-background>>\n            pre-border: <<colour pre-background>>\n        sidebar-tab-background-selected: <<colour page-background>>\n    table-header-background: <<colour base2>>\n    tag-background: <<colour base2>>\n    tiddler-editor-background: <<colour base2>>\n    tiddler-info-background: <<colour base2>>\n    tiddler-info-tab-background: <<colour base2>>\n    tab-background: <<colour base2>>\n        dropdown-tab-background: <<colour tab-background>>\n: base3\n    alert-background: <<colour base3>>\n    message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n    alert-highlight: <<colour magenta>>\n: violet\n    external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n    tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n    external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n    primary: <<colour blue-muted>>\n        download-background: <<colour primary>>\n        tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n    modal-footer-border: <<colour tab-border>>\n    modal-header-border: <<colour tab-border>>\n    notification-border: <<colour tab-border>>\n    sidebar-tab-border: <<colour tab-border>>\n    tab-border-selected: <<colour tab-border>>\n        sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n    sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Vanilla": {
            "title": "$:/palettes/Vanilla",
            "name": "Vanilla",
            "description": "Pale and unobtrusive",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/core/readme": {
            "title": "$:/core/readme",
            "text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
        },
        "$:/library/sjcl.js/license": {
            "title": "$:/library/sjcl.js/license",
            "type": "text/plain",
            "text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
        },
        "$:/core/templates/MOTW.html": {
            "title": "$:/core/templates/MOTW.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)http://tiddlywiki.com -->&#13;&#10;"
        },
        "$:/core/templates/alltiddlers.template.html": {
            "title": "$:/core/templates/alltiddlers.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
        },
        "$:/core/templates/canonical-uri-external-image": {
            "title": "$:/core/templates/canonical-uri-external-image",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-text": {
            "title": "$:/core/templates/canonical-uri-external-text",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
        },
        "$:/core/templates/css-tiddler": {
            "title": "$:/core/templates/css-tiddler",
            "text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
        },
        "$:/core/templates/exporters/CsvFile": {
            "title": "$:/core/templates/exporters/CsvFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/CsvFile}}",
            "extension": ".csv",
            "text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/JsonFile": {
            "title": "$:/core/templates/exporters/JsonFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/JsonFile}}",
            "extension": ".json",
            "text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/StaticRiver": {
            "title": "$:/core/templates/exporters/StaticRiver",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/StaticRiver}}",
            "extension": ".html",
            "text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
        },
        "$:/core/templates/exporters/StaticRiver/Content": {
            "title": "$:/core/templates/exporters/StaticRiver/Content",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<<renderContent>>\n</$importvariables>\n"
        },
        "$:/core/templates/exporters/TidFile": {
            "title": "$:/core/templates/exporters/TidFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/TidFile}}",
            "extension": ".tid",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\"><<renderContent>></$importvariables>"
        },
        "$:/core/templates/html-div-tiddler": {
            "title": "$:/core/templates/html-div-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
        },
        "$:/core/templates/html-tiddler": {
            "title": "$:/core/templates/html-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
        },
        "$:/core/templates/javascript-tiddler": {
            "title": "$:/core/templates/javascript-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
        },
        "$:/core/templates/json-tiddler": {
            "title": "$:/core/templates/json-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
        },
        "$:/core/templates/module-tiddler": {
            "title": "$:/core/templates/module-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
        },
        "$:/core/templates/plain-text-tiddler": {
            "title": "$:/core/templates/plain-text-tiddler",
            "text": "<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/raw-static-tiddler": {
            "title": "$:/core/templates/raw-static-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
        },
        "$:/core/save/all": {
            "title": "$:/core/save/all",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/empty": {
            "title": "$:/core/save/empty",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-all": {
            "title": "$:/core/save/lazy-all",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-images": {
            "title": "$:/core/save/lazy-images",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/templates/single.tiddler.window": {
            "title": "$:/core/templates/single.tiddler.window",
            "text": "<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"tempCurrentTiddler\" value=<<currentTiddler>>>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=<<tempCurrentTiddler>>>\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</$importvariables>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n"
        },
        "$:/core/templates/split-recipe": {
            "title": "$:/core/templates/split-recipe",
            "text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
        },
        "$:/core/templates/static-tiddler": {
            "title": "$:/core/templates/static-tiddler",
            "text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
        },
        "$:/core/templates/static.area": {
            "title": "$:/core/templates/static.area",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n"
        },
        "$:/core/templates/static.content": {
            "title": "$:/core/templates/static.content",
            "type": "text/vnd.tiddlywiki",
            "text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|http://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
        },
        "$:/core/templates/static.template.css": {
            "title": "$:/core/templates/static.template.css",
            "text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
        },
        "$:/core/templates/static.template.html": {
            "title": "$:/core/templates/static.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
        },
        "$:/core/templates/static.tiddler.html": {
            "title": "$:/core/templates/static.tiddler.html",
            "text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>\n</$importvariables>`\n</section>\n</body>\n</html>\n`"
        },
        "$:/core/templates/store.area.template.html": {
            "title": "$:/core/templates/store.area.template.html",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
        },
        "$:/core/templates/tid-tiddler": {
            "title": "$:/core/templates/tid-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/tiddler-metadata": {
            "title": "$:/core/templates/tiddler-metadata",
            "text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
        },
        "$:/core/templates/tiddlywiki5.html": {
            "title": "$:/core/templates/tiddlywiki5.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html>\n<head>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\">\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}\n</div>\n</body>\n</html>\n"
        },
        "$:/core/templates/version": {
            "title": "$:/core/templates/version",
            "text": "<<version>>"
        },
        "$:/core/templates/wikified-tiddler": {
            "title": "$:/core/templates/wikified-tiddler",
            "text": "<$transclude />"
        },
        "$:/core/ui/AboveStory/tw2-plugin-check": {
            "title": "$:/core/ui/AboveStory/tw2-plugin-check",
            "tags": "$:/tags/AboveStory",
            "text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter": {
            "title": "$:/core/ui/AdvancedSearch/Filter",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Filter/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Shadows": {
            "title": "$:/core/ui/AdvancedSearch/Shadows",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Shadows/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Standard": {
            "title": "$:/core/ui/AdvancedSearch/Standard",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Standard/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/System": {
            "title": "$:/core/ui/AdvancedSearch/System",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/System/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/AdvancedSearch": {
            "title": "$:/AdvancedSearch",
            "icon": "$:/core/images/advanced-search-button",
            "color": "#bbb",
            "text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
        },
        "$:/core/ui/AlertTemplate": {
            "title": "$:/core/ui/AlertTemplate",
            "text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/delete-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=\"0hh:0mm:0ss DD MM YYYY\"/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
        },
        "$:/core/ui/BinaryWarning": {
            "title": "$:/core/ui/BinaryWarning",
            "text": "\\define lingo-base() $:/language/BinaryWarning/\n<div class=\"tc-binary-warning\">\n\n<<lingo Prompt>>\n\n</div>\n"
        },
        "$:/core/ui/Components/plugin-info": {
            "title": "$:/core/ui/Components/plugin-info",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1>\n''<$view field=\"description\"><$view field=\"title\"/></$view>'' $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$reveal type=\"nomatch\" text=\"\" state=\"!!list\">\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default=\"readme\" template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=\"!!list\">\n<<lingo NoInformation/Hint>>\n</$reveal>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
        },
        "$:/core/ui/Components/tag-link": {
            "title": "$:/core/ui/Components/tag-link",
            "text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
        },
        "$:/core/ui/ControlPanel/Advanced": {
            "title": "$:/core/ui/ControlPanel/Advanced",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
            "text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Appearance": {
            "title": "$:/core/ui/ControlPanel/Appearance",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
            "text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Basics": {
            "title": "$:/core/ui/ControlPanel/Basics",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Basics/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Tags\" default=\"\" tag=\"input\"/> |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
        },
        "$:/core/ui/ControlPanel/EditorTypes": {
            "title": "$:/core/ui/ControlPanel/EditorTypes",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/Info": {
            "title": "$:/core/ui/ControlPanel/Info",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Info/Caption}}",
            "text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/KeyboardShortcuts": {
            "title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip=<<lingo Remove/Hint>>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n&times;\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[all[tiddlers+shadows][$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>prefix[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/LoadedModules": {
            "title": "$:/core/ui/ControlPanel/LoadedModules",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
        },
        "$:/core/ui/ControlPanel/Modals/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
            "subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
            "text": "\\define install-plugin-button()\n<$button>\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\"\"\">\n{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\n</$list>\n</$button>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1><$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<<install-plugin-button>>\n</div>\n</div>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\"\"\">\n<em>\n{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}\n</em>\n</$list>\n</div>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<div class=\"tc-plugin-library\">\n\n!! <$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link>\n\n//<$view field=\"url\"/>//\n\n<$transclude/>\n\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n\n<<display-server-connection>>\n</div>\n</$list>\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<div>\n<<plugin-library-listing>>\n</div>\n\n</$importvariables>\n"
        },
        "$:/core/ui/ControlPanel/Palette": {
            "title": "$:/core/ui/ControlPanel/Palette",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Palette/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/snippets/paletteeditor}}\n\n</$reveal>\n\n"
        },
        "$:/core/ui/ControlPanel/Parsing": {
            "title": "$:/core/ui/ControlPanel/Parsing",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
            "text": "<<display-server-assets language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
            "text": "<<display-server-assets plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
            "text": "<<display-server-assets theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green\" style=\"background:blue;\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
            "text": "<<plugin-table language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
            "text": "<<plugin-table plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
            "text": "<<plugin-table theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[description]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
        },
        "$:/core/ui/ControlPanel/Saving/DownloadSaver": {
            "title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Saving/General": {
            "title": "$:/core/ui/ControlPanel/Saving/General",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
            "list-before": "",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Saving/TiddlySpot": {
            "title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>>  |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
        },
        "$:/core/ui/ControlPanel/Saving": {
            "title": "$:/core/ui/ControlPanel/Saving",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Saving/Caption}}",
            "text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\n</div>\n"
        },
        "$:/core/buttonstyles/Borderless": {
            "title": "$:/core/buttonstyles/Borderless",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
            "text": "tc-btn-invisible"
        },
        "$:/core/buttonstyles/Boxed": {
            "title": "$:/core/buttonstyles/Boxed",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
            "text": "tc-btn-boxed"
        },
        "$:/core/buttonstyles/Rounded": {
            "title": "$:/core/buttonstyles/Rounded",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
            "text": "tc-btn-rounded"
        },
        "$:/core/ui/ControlPanel/Settings/CamelCase": {
            "title": "$:/core/ui/ControlPanel/Settings/CamelCase",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
            "caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
            "title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
            "title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n  <option value=\"above\"><<lingo \"OpenAbove\">></option>\n  <option value=\"below\"><<lingo \"OpenBelow\">></option>\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/MissingLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationHistory": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
            "title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/TitleLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings": {
            "title": "$:/core/ui/ControlPanel/Settings",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Settings/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ControlPanel/StoryView": {
            "title": "$:/core/ui/ControlPanel/StoryView",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
            "text": "{{$:/snippets/viewswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/Theme": {
            "title": "$:/core/ui/ControlPanel/Theme",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Theme/Caption}}",
            "text": "{{$:/snippets/themeswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/TiddlerFields": {
            "title": "$:/core/ui/ControlPanel/TiddlerFields",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/PageControls": {
            "title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars": {
            "title": "$:/core/ui/ControlPanel/Toolbars",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
            "text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
        },
        "$:/ControlPanel": {
            "title": "$:/ControlPanel",
            "icon": "$:/core/images/options-button",
            "color": "#bbb",
            "text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
        },
        "$:/core/ui/DefaultSearchResultList": {
            "title": "$:/core/ui/DefaultSearchResultList",
            "tags": "$:/tags/SearchResults",
            "caption": "{{$:/language/Search/DefaultResults/Caption}}",
            "text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end\n<<searchResultList>>\n"
        },
        "$:/core/ui/EditTemplate/body/preview/output": {
            "title": "$:/core/ui/EditTemplate/body/preview/output",
            "tags": "$:/tags/EditPreview",
            "caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
            "text": "<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
        },
        "$:/core/ui/EditTemplate/body/editor": {
            "title": "$:/core/ui/EditTemplate/body/editor",
            "text": "<$edit\n\n  field=\"text\"\n  class=\"tc-edit-texteditor\"\n  placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n\n><$set\n\n  name=\"targetTiddler\"\n  value=<<currentTiddler>>\n\n><$list\n\n  filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n  type=\"nomatch\"\n  state=<<config-visibility-title>>\n  text=\"hide\"\n  class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n  tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n  mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
        },
        "$:/core/ui/EditTemplate/body/toolbar/button": {
            "title": "$:/core/ui/EditTemplate/body/toolbar/button",
            "text": "\\define toolbar-button-icon()\n<$list\n\n  filter=\"[all[current]!has[custom-icon]]\"\n  variable=\"no-custom-icon\"\n\n><$transclude\n\n  tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n  filter={{!!condition}}\n  variable=\"list-condition\"\n\n><$wikify\n\n  name=\"tooltip-text\"\n  text=<<toolbar-button-tooltip>>\n  mode=\"inline\"\n  output=\"text\"\n\n><$list\n\n  filter=\"[all[current]!has[dropdown]]\"\n  variable=\"no-dropdown\"\n\n><$button\n\n  class=\"tc-btn-invisible $(buttonClasses)$\"\n  tooltip=<<tooltip-text>>\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button></$list><$list\n\n  filter=\"[all[current]has[dropdown]]\"\n  variable=\"dropdown\"\n\n><$set\n\n  name=\"dropdown-state\"\n  value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n  popup=<<dropdown-state>>\n  class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n  selectedClass=\"tc-selected\"\n  tooltip=<<tooltip-text>>\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button><$reveal\n\n  state=<<dropdown-state>>\n  type=\"popup\"\n  position=\"below\"\n  animate=\"yes\"\n  tag=\"span\"\n\n><div\n\n  class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n  tiddler={{!!dropdown}}\n  mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n  name=\"buttonClasses\"\n  value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
        },
        "$:/core/ui/EditTemplate/body": {
            "title": "$:/core/ui/EditTemplate/body",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[is[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[is[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/EditTemplate/controls": {
            "title": "$:/core/ui/EditTemplate/controls",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/fields": {
            "title": "$:/core/ui/EditTemplate/fields",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define new-field-inner()\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button>\n<$action-sendmessage $message=\"tm-add-field\" $name=<<name>> $value=<<value>>/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n\\end\n\n\\define new-field()\n<$set name=\"name\" value={{$:/temp/newfieldname}}>\n<$set name=\"value\" value={{$:/temp/newfieldvalue}}>\n<<new-field-inner>>\n</$set>\n</$set>\n\\end\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\"  variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"
        },
        "$:/core/ui/EditTemplate/shadow": {
            "title": "$:/core/ui/EditTemplate/shadow",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
        },
        "$:/core/ui/EditTemplate/tags": {
            "title": "$:/core/ui/EditTemplate/tags",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">&times;</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/>\n\\end\n\n\\define tag-picker-actions()\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}}/>\n</$list>\n</$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/title": {
            "title": "$:/core/ui/EditTemplate/title",
            "tags": "$:/tags/EditTemplate",
            "text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[is[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n\n\n"
        },
        "$:/core/ui/EditTemplate/type": {
            "title": "$:/core/ui/EditTemplate/type",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-popup-handle\"/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>"
        },
        "$:/core/ui/EditTemplate": {
            "title": "$:/core/ui/EditTemplate",
            "text": "\\define actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define frame-classes()\ntc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$\n\\end\n<div class=<<frame-classes>>>\n<$fieldmangler>\n<$set name=\"storyTiddler\" value=<<currentTiddler>>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n</$list>\n</$keyboard>\n</$keyboard>\n</$set>\n</$fieldmangler>\n</div>\n"
        },
        "$:/core/ui/Buttons/cancel": {
            "title": "$:/core/ui/Buttons/cancel",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
            "description": "{{$:/language/Buttons/Cancel/Hint}}",
            "text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/delete": {
            "title": "$:/core/ui/Buttons/delete",
            "tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
            "caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
            "description": "{{$:/language/Buttons/Delete/Hint}}",
            "text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save": {
            "title": "$:/core/ui/Buttons/save",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
            "description": "{{$:/language/Buttons/Save/Hint}}",
            "text": "<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button>\n</$fieldmangler>\n"
        },
        "$:/core/ui/EditorToolbar/bold": {
            "title": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}}",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/clear-dropdown": {
            "title": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/clear": {
            "title": "$:/core/ui/EditorToolbar/clear",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/erase",
            "caption": "{{$:/language/Buttons/Clear/Caption}}",
            "description": "{{$:/language/Buttons/Clear/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/editor-height-dropdown": {
            "title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
        },
        "$:/core/ui/EditorToolbar/editor-height": {
            "title": "$:/core/ui/EditorToolbar/editor-height",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/fixed-height",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
            "description": "{{$:/language/Buttons/EditorHeight/Hint}}",
            "condition": "[<targetTiddler>!is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/excise-dropdown": {
            "title": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/excise": {
            "title": "$:/core/ui/EditorToolbar/excise",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/excise",
            "caption": "{{$:/language/Buttons/Excise/Caption}}",
            "description": "{{$:/language/Buttons/Excise/Hint}}",
            "condition": "[<targetTiddler>!is[image]]",
            "shortcuts": "((excise))",
            "dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/heading-1": {
            "title": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}}",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-2": {
            "title": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}}",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-3": {
            "title": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}}",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}}",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}}",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}}",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/italic": {
            "title": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}}",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/line-width-dropdown": {
            "title": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/line-width": {
            "title": "$:/core/ui/EditorToolbar/line-width",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/line-width",
            "caption": "{{$:/language/Buttons/LineWidth/Caption}}",
            "description": "{{$:/language/Buttons/LineWidth/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>"
        },
        "$:/core/ui/EditorToolbar/link-dropdown": {
            "title": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define link-actions()\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"make-link\"\n\ttext={{$(linkTiddler)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<searchTiddler>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<linkTiddler>>\n/>\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(searchTiddler)$}}\n/>\n{{$:/core/images/chevron-right}}\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<searchTiddler>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<linkTiddler>>\n/>\n</$button>\n\\end\n\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
        },
        "$:/core/ui/EditorToolbar/link": {
            "title": "$:/core/ui/EditorToolbar/link",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/link",
            "caption": "{{$:/language/Buttons/Link/Caption}}",
            "description": "{{$:/language/Buttons/Link/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((link))",
            "dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/list-bullet": {
            "title": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}}",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-number": {
            "title": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}}",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-block": {
            "title": "$:/core/ui/EditorToolbar/mono-block",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-block",
            "caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
            "description": "{{$:/language/Buttons/MonoBlock/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((mono-block))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-line": {
            "title": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}}",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/more-dropdown": {
            "title": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/more": {
            "title": "$:/core/ui/EditorToolbar/more",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/down-arrow",
            "caption": "{{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "condition": "[<targetTiddler>]",
            "dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/opacity-dropdown": {
            "title": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/opacity": {
            "title": "$:/core/ui/EditorToolbar/opacity",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/opacity",
            "caption": "{{$:/language/Buttons/Opacity/Caption}}",
            "description": "{{$:/language/Buttons/Opacity/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
        },
        "$:/core/ui/EditorToolbar/paint-dropdown": {
            "title": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/paint": {
            "title": "$:/core/ui/EditorToolbar/paint",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/paint",
            "caption": "{{$:/language/Buttons/Paint/Caption}}",
            "description": "{{$:/language/Buttons/Paint/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/picture-dropdown": {
            "title": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/picture": {
            "title": "$:/core/ui/EditorToolbar/picture",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/picture",
            "caption": "{{$:/language/Buttons/Picture/Caption}}",
            "description": "{{$:/language/Buttons/Picture/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((picture))",
            "dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/preview-type-dropdown": {
            "title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
            "text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/preview-type": {
            "title": "$:/core/ui/EditorToolbar/preview-type",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/chevron-down",
            "caption": "{{$:/language/Buttons/PreviewType/Caption}}",
            "description": "{{$:/language/Buttons/PreviewType/Hint}}",
            "condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
            "button-classes": "tc-text-editor-toolbar-item-adjunct",
            "dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
        },
        "$:/core/ui/EditorToolbar/preview": {
            "title": "$:/core/ui/EditorToolbar/preview",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/preview-open",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/Preview/Caption}}",
            "description": "{{$:/language/Buttons/Preview/Hint}}",
            "condition": "[<targetTiddler>]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((preview))",
            "text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/quote": {
            "title": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}}",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/size-dropdown": {
            "title": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> &times; <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/size": {
            "title": "$:/core/ui/EditorToolbar/size",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/size",
            "caption": "{{$:/language/Buttons/Size/Caption}}",
            "description": "{{$:/language/Buttons/Size/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/stamp-dropdown": {
            "title": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$view tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" mode=\"inline\"/>\n\n</$view>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
        },
        "$:/core/ui/EditorToolbar/stamp": {
            "title": "$:/core/ui/EditorToolbar/stamp",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/stamp",
            "caption": "{{$:/language/Buttons/Stamp/Caption}}",
            "description": "{{$:/language/Buttons/Stamp/Hint}}",
            "condition": "[<targetTiddler>!is[image]]",
            "shortcuts": "((stamp))",
            "dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/strikethrough": {
            "title": "$:/core/ui/EditorToolbar/strikethrough",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/strikethrough",
            "caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
            "description": "{{$:/language/Buttons/Strikethrough/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((strikethrough))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/subscript": {
            "title": "$:/core/ui/EditorToolbar/subscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/subscript",
            "caption": "{{$:/language/Buttons/Subscript/Caption}}",
            "description": "{{$:/language/Buttons/Subscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((subscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/superscript": {
            "title": "$:/core/ui/EditorToolbar/superscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/superscript",
            "caption": "{{$:/language/Buttons/Superscript/Caption}}",
            "description": "{{$:/language/Buttons/Superscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((superscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/underline": {
            "title": "$:/core/ui/EditorToolbar/underline",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/underline",
            "caption": "{{$:/language/Buttons/Underline/Caption}}",
            "description": "{{$:/language/Buttons/Underline/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((underline))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
        },
        "$:/core/Filters/AllTags": {
            "title": "$:/core/Filters/AllTags",
            "tags": "$:/tags/Filter",
            "filter": "[tags[]!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTags}}",
            "text": ""
        },
        "$:/core/Filters/AllTiddlers": {
            "title": "$:/core/Filters/AllTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/Drafts": {
            "title": "$:/core/Filters/Drafts",
            "tags": "$:/tags/Filter",
            "filter": "[has[draft.of]sort[title]]",
            "description": "{{$:/language/Filters/Drafts}}",
            "text": ""
        },
        "$:/core/Filters/Missing": {
            "title": "$:/core/Filters/Missing",
            "tags": "$:/tags/Filter",
            "filter": "[all[missing]sort[title]]",
            "description": "{{$:/language/Filters/Missing}}",
            "text": ""
        },
        "$:/core/Filters/Orphans": {
            "title": "$:/core/Filters/Orphans",
            "tags": "$:/tags/Filter",
            "filter": "[all[orphans]sort[title]]",
            "description": "{{$:/language/Filters/Orphans}}",
            "text": ""
        },
        "$:/core/Filters/OverriddenShadowTiddlers": {
            "title": "$:/core/Filters/OverriddenShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[shadow]]",
            "description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentSystemTiddlers": {
            "title": "$:/core/Filters/RecentSystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentSystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentTiddlers": {
            "title": "$:/core/Filters/RecentTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/ShadowTiddlers": {
            "title": "$:/core/Filters/ShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows]sort[title]]",
            "description": "{{$:/language/Filters/ShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/StoryList": {
            "title": "$:/core/Filters/StoryList",
            "tags": "$:/tags/Filter",
            "filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
            "description": "{{$:/language/Filters/StoryList}}",
            "text": ""
        },
        "$:/core/Filters/SystemTags": {
            "title": "$:/core/Filters/SystemTags",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTags}}",
            "text": ""
        },
        "$:/core/Filters/SystemTiddlers": {
            "title": "$:/core/Filters/SystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/TypedTiddlers": {
            "title": "$:/core/Filters/TypedTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Filters/TypedTiddlers}}",
            "text": ""
        },
        "$:/core/ui/ImportListing": {
            "title": "$:/core/ui/ImportListing",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table>\n<tbody>\n<tr>\n<th>\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>>>\n<$transclude subtiddler=<<payloadTiddler>> mode=\"block\"/>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ListItemTemplate": {
            "title": "$:/core/ui/ListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</div>"
        },
        "$:/Manager/ItemMain/Fields": {
            "title": "$:/Manager/ItemMain/Fields",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/Fields}}",
            "text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/Manager/ItemMain/RawText": {
            "title": "$:/Manager/ItemMain/RawText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/RawText}}",
            "text": "<pre><code><$view/></code></pre>\n"
        },
        "$:/Manager/ItemMain/WikifiedText": {
            "title": "$:/Manager/ItemMain/WikifiedText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/WikifiedText}}",
            "text": "<$transclude mode=\"block\"/>\n"
        },
        "$:/Manager/ItemSidebar/Colour": {
            "title": "$:/Manager/ItemSidebar/Colour",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Colour}}",
            "text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Icon": {
            "title": "$:/Manager/ItemSidebar/Icon",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Icon}}",
            "text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tags": {
            "title": "$:/Manager/ItemSidebar/Tags",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tags}}",
            "text": "\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[is[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tools": {
            "title": "$:/Manager/ItemSidebar/Tools",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tools}}",
            "text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
        },
        "$:/Manager": {
            "title": "$:/Manager",
            "icon": "$:/core/images/list",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
        },
        "$:/core/ui/MissingTemplate": {
            "title": "$:/core/ui/MissingTemplate",
            "text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
        },
        "$:/core/ui/MoreSideBar/All": {
            "title": "$:/core/ui/MoreSideBar/All",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/All/Caption}}",
            "text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Drafts": {
            "title": "$:/core/ui/MoreSideBar/Drafts",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Drafts/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Missing": {
            "title": "$:/core/ui/MoreSideBar/Missing",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Missing/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Orphans": {
            "title": "$:/core/ui/MoreSideBar/Orphans",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Orphans/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\n"
        },
        "$:/core/ui/MoreSideBar/Recent": {
            "title": "$:/core/ui/MoreSideBar/Recent",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Shadows": {
            "title": "$:/core/ui/MoreSideBar/Shadows",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Shadows/Caption}}",
            "text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/System": {
            "title": "$:/core/ui/MoreSideBar/System",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/System/Caption}}",
            "text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Tags": {
            "title": "$:/core/ui/MoreSideBar/Tags",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Tags/Caption}}",
            "text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
        },
        "$:/core/ui/MoreSideBar/Types": {
            "title": "$:/core/ui/MoreSideBar/Types",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Types/Caption}}",
            "text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Languages": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Languages",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Theme": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Theme",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/Buttons/advanced-search": {
            "title": "$:/core/ui/Buttons/advanced-search",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
            "description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
            "text": "\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/close-all": {
            "title": "$:/core/ui/Buttons/close-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
            "description": "{{$:/language/Buttons/CloseAll/Hint}}",
            "text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/control-panel": {
            "title": "$:/core/ui/Buttons/control-panel",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
            "description": "{{$:/language/Buttons/ControlPanel/Hint}}",
            "text": "\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/encryption": {
            "title": "$:/core/ui/Buttons/encryption",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
            "description": "{{$:/language/Buttons/Encryption/Hint}}",
            "text": "<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>"
        },
        "$:/core/ui/Buttons/export-page": {
            "title": "$:/core/ui/Buttons/export-page",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
            "description": "{{$:/language/Buttons/ExportPage/Hint}}",
            "text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
        },
        "$:/core/ui/Buttons/fold-all": {
            "title": "$:/core/ui/Buttons/fold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
            "description": "{{$:/language/Buttons/FoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/full-screen": {
            "title": "$:/core/ui/Buttons/full-screen",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
            "description": "{{$:/language/Buttons/FullScreen/Hint}}",
            "text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/home": {
            "title": "$:/core/ui/Buttons/home",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
            "description": "{{$:/language/Buttons/Home/Hint}}",
            "text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/import": {
            "title": "$:/core/ui/Buttons/import",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
            "description": "{{$:/language/Buttons/Import/Hint}}",
            "text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
        },
        "$:/core/ui/Buttons/language": {
            "title": "$:/core/ui/Buttons/language",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
            "description": "{{$:/language/Buttons/Language/Hint}}",
            "text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down tc-drop-down-language-chooser\">\n<$linkcatcher to=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$link>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/language\" text=<<currentTiddler>>>\n&bull;\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/language\" text=<<currentTiddler>>>\n&nbsp;\n</$reveal>\n</span>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/manager": {
            "title": "$:/core/ui/Buttons/manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
            "description": "{{$:/language/Buttons/Manager/Hint}}",
            "text": "\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/core/ui/Buttons/more-page-actions",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-image": {
            "title": "$:/core/ui/Buttons/new-image",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
            "description": "{{$:/language/Buttons/NewImage/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=\"image/jpeg\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/new-journal": {
            "title": "$:/core/ui/Buttons/new-journal",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
            "description": "{{$:/language/Buttons/NewJournal/Hint}}",
            "text": "\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=\"$(journalTags)$\" text=\"$(journalText)$\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"journalText\" value={{$:/config/NewJournal/Text}}>\n<<journalButton>>\n</$set></$set></$set>"
        },
        "$:/core/ui/Buttons/new-tiddler": {
            "title": "$:/core/ui/Buttons/new-tiddler",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
            "description": "{{$:/language/Buttons/NewTiddler/Hint}}",
            "text": "<$button message=\"tm-new-tiddler\" tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/palette": {
            "title": "$:/core/ui/Buttons/palette",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
            "description": "{{$:/language/Buttons/Palette/Hint}}",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/print": {
            "title": "$:/core/ui/Buttons/print",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
            "description": "{{$:/language/Buttons/Print/Hint}}",
            "text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/refresh": {
            "title": "$:/core/ui/Buttons/refresh",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
            "description": "{{$:/language/Buttons/Refresh/Hint}}",
            "text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save-wiki": {
            "title": "$:/core/ui/Buttons/save-wiki",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
            "description": "{{$:/language/Buttons/SaveWiki/Hint}}",
            "text": "<$button message=\"tm-save-wiki\" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
        },
        "$:/core/ui/Buttons/storyview": {
            "title": "$:/core/ui/Buttons/storyview",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
            "description": "{{$:/language/Buttons/StoryView/Hint}}",
            "text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/view\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$link to=<<storyview>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/view\" text=<<storyview>>>\n&bull;\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/view\" text=<<storyview>>>\n&nbsp;\n</$reveal>\n</span>\n<$transclude tiddler=<<icon>>/>\n<$text text=<<storyview>>/></$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/tag-manager": {
            "title": "$:/core/ui/Buttons/tag-manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
            "description": "{{$:/language/Buttons/TagManager/Hint}}",
            "text": "\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/theme": {
            "title": "$:/core/ui/Buttons/theme",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
            "description": "{{$:/language/Buttons/Theme/Hint}}",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\" variable=\"themeTitle\">\n<$link to=<<themeTitle>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/theme\" text=<<themeTitle>>>\n&bull;\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/theme\" text=<<themeTitle>>>\n&nbsp;\n</$reveal>\n</span>\n<$view tiddler=<<themeTitle>> field=\"name\"/>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/timestamp": {
            "title": "$:/core/ui/Buttons/timestamp",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
            "description": "{{$:/language/Buttons/Timestamp/Hint}}",
            "text": "<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>"
        },
        "$:/core/ui/Buttons/unfold-all": {
            "title": "$:/core/ui/Buttons/unfold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
            "description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/PageTemplate/pagecontrols": {
            "title": "$:/core/ui/PageTemplate/pagecontrols",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$reveal>\n</$list>\n</div>\n\n"
        },
        "$:/core/ui/PageStylesheet": {
            "title": "$:/core/ui/PageStylesheet",
            "text": "<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n"
        },
        "$:/core/ui/PageTemplate/alerts": {
            "title": "$:/core/ui/PageTemplate/alerts",
            "tags": "$:/tags/PageTemplate",
            "text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
        },
        "$:/core/ui/PageTemplate/pluginreloadwarning": {
            "title": "$:/core/ui/PageTemplate/pluginreloadwarning",
            "tags": "$:/tags/PageTemplate",
            "text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[has[plugin-type]haschanged[]!plugin-type[import]limit[1]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/PageTemplate/sidebar": {
            "title": "$:/core/ui/PageTemplate/sidebar",
            "tags": "$:/tags/PageTemplate",
            "text": "<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n\n<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n\n{{||$:/core/ui/PageTemplate/pagecontrols}}\n\n<$transclude tiddler=\"$:/core/ui/SideBarLists\" mode=\"inline\"/>\n\n</$reveal>\n\n</div>\n\n</$scrollable>"
        },
        "$:/core/ui/PageTemplate/story": {
            "title": "$:/core/ui/PageTemplate/story",
            "tags": "$:/tags/PageTemplate",
            "text": "<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template=\"$:/core/ui/ViewTemplate\" editTemplate=\"$:/core/ui/EditTemplate\" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
        },
        "$:/core/ui/PageTemplate/topleftbar": {
            "title": "$:/core/ui/PageTemplate/topleftbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate/toprightbar": {
            "title": "$:/core/ui/PageTemplate/toprightbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate": {
            "title": "$:/core/ui/PageTemplate",
            "text": "\\define containerClasses()\ntc-page-container tc-page-view-$(themeTitle)$ tc-language-$(languageTitle)$\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=\"\">\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n"
        },
        "$:/core/ui/PluginInfo": {
            "title": "$:/core/ui/PluginInfo",
            "text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
        },
        "$:/core/ui/PluginInfo/Default/contents": {
            "title": "$:/core/ui/PluginInfo/Default/contents",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n"
        },
        "$:/core/ui/PluginListItemTemplate": {
            "title": "$:/core/ui/PluginListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"description\">\n<$view field=\"title\"/>\n</$view>\n</$link>\n</div>"
        },
        "$:/core/ui/SearchResults": {
            "title": "$:/core/ui/SearchResults",
            "text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n\n</div>\n"
        },
        "$:/core/ui/SideBar/More": {
            "title": "$:/core/ui/SideBar/More",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/More/Caption}}",
            "text": "<div class=\"tc-more-sidebar\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Tags\" \"$:/state/tab/moresidebar\" \"tc-vertical\">>\n</div>\n"
        },
        "$:/core/ui/SideBar/Open": {
            "title": "$:/core/ui/SideBar/Open",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Open/Caption}}",
            "text": "\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=\"$:/StoryList\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" storyview=\"pop\">\n<div style=\"position: relative;\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div>\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">&times;</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$droppable>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\n</$droppable>\n</$tiddler>\n"
        },
        "$:/core/ui/SideBar/Recent": {
            "title": "$:/core/ui/SideBar/Recent",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/SideBar/Tools": {
            "title": "$:/core/ui/SideBar/Tools",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/SideBarLists": {
            "title": "$:/core/ui/SideBarLists",
            "text": "<div class=\"tc-sidebar-lists\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search{$(searchTiddler)$}]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" />\n\n</div>\n"
        },
        "$:/TagManager": {
            "title": "$:/TagManager",
            "icon": "$:/core/images/tag-button",
            "color": "#bbb",
            "caption": "{{$:/language/TagManager/Caption}}",
            "text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/icon/$title$\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/icon/$title$\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$title$!!icon\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define qualifyTitle(title)\n$title$$(currentTiddler)$\n\\end\n\\define toggleButton(state)\n<$reveal state=\"$state$\" type=\"match\" text=\"closed\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal state=\"$state$\" type=\"match\" text=\"open\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td><$macrocall $name=\"tag\" tag=<<currentTiddler>>/></td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state=<<qualifyTitle \"$:/state/tag-manager/\">> /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal state=<<qualifyTitle \"$:/state/tag-manager/\">> type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td>\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TagTemplate": {
            "title": "$:/core/ui/TagTemplate",
            "text": "<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
        },
        "$:/core/ui/TiddlerFieldTemplate": {
            "title": "$:/core/ui/TiddlerFieldTemplate",
            "text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
        },
        "$:/core/ui/TiddlerFields": {
            "title": "$:/core/ui/TiddlerFields",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced": {
            "title": "$:/core/ui/TiddlerInfo/Advanced",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
            "text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Fields": {
            "title": "$:/core/ui/TiddlerInfo/Fields",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
            "text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/List": {
            "title": "$:/core/ui/TiddlerInfo/List",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/List/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Listed": {
            "title": "$:/core/ui/TiddlerInfo/Listed",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/References": {
            "title": "$:/core/ui/TiddlerInfo/References",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/References/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Tagging": {
            "title": "$:/core/ui/TiddlerInfo/Tagging",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Tools": {
            "title": "$:/core/ui/TiddlerInfo/Tools",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo": {
            "title": "$:/core/ui/TiddlerInfo",
            "text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
        },
        "$:/core/ui/TopBar/menu": {
            "title": "$:/core/ui/TopBar/menu",
            "tags": "$:/tags/TopRightBar",
            "text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$reveal>\n"
        },
        "$:/core/ui/UntaggedTemplate": {
            "title": "$:/core/ui/UntaggedTemplate",
            "text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/body": {
            "title": "$:/core/ui/ViewTemplate/body",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" state=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>"
        },
        "$:/core/ui/ViewTemplate/classic": {
            "title": "$:/core/ui/ViewTemplate/classic",
            "tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/import": {
            "title": "$:/core/ui/ViewTemplate/import",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define lingo-base() $:/language/Import/\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n\n{{||$:/core/ui/ImportListing}}\n\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/plugin": {
            "title": "$:/core/ui/ViewTemplate/plugin",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/subtitle": {
            "title": "$:/core/ui/ViewTemplate/subtitle",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/tags": {
            "title": "$:/core/ui/ViewTemplate/tags",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>"
        },
        "$:/core/ui/ViewTemplate/title": {
            "title": "$:/core/ui/ViewTemplate/title",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}/>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo\"/>\n\n</$reveal>\n</div>"
        },
        "$:/core/ui/ViewTemplate/unfold": {
            "title": "$:/core/ui/ViewTemplate/unfold",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" state=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" state=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate": {
            "title": "$:/core/ui/ViewTemplate",
            "text": "\\define frame-classes()\ntc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ $(tiddlerTagClasses)$\n\\end\n\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n<$set name=\"storyTiddler\" value=<<currentTiddler>>><$set name=\"tiddlerInfoState\" value=<<qualify \"$:/state/popup/tiddler-info\">>><$tiddler tiddler=<<currentTiddler>>><div class=<<frame-classes>>><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$tiddler></$set></$set>\n"
        },
        "$:/core/ui/Buttons/clone": {
            "title": "$:/core/ui/Buttons/clone",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
            "description": "{{$:/language/Buttons/Clone/Hint}}",
            "text": "<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Clone/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close-others": {
            "title": "$:/core/ui/Buttons/close-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
            "description": "{{$:/language/Buttons/CloseOthers/Hint}}",
            "text": "<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseOthers/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close": {
            "title": "$:/core/ui/Buttons/close",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
            "description": "{{$:/language/Buttons/Close/Hint}}",
            "text": "<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Close/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/edit": {
            "title": "$:/core/ui/Buttons/edit",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
            "description": "{{$:/language/Buttons/Edit/Hint}}",
            "text": "<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Edit/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/core/ui/Buttons/export-tiddler",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
            "description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
            "text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
        },
        "$:/core/ui/Buttons/fold-bar": {
            "title": "$:/core/ui/Buttons/fold-bar",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
            "description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
            "text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
        },
        "$:/core/ui/Buttons/fold-others": {
            "title": "$:/core/ui/Buttons/fold-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
            "description": "{{$:/language/Buttons/FoldOthers/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldOthers/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/fold": {
            "title": "$:/core/ui/Buttons/fold",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
            "description": "{{$:/language/Buttons/Fold/Hint}}",
            "text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" default=\"show\"><$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button></$reveal><$reveal type=\"match\" state=<<folded-state>> text=\"hide\" default=\"show\"><$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button></$reveal>"
        },
        "$:/core/ui/Buttons/info": {
            "title": "$:/core/ui/Buttons/info",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
            "description": "{{$:/language/Buttons/Info/Hint}}",
            "text": "\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Info/Caption}}/></span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
        },
        "$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/core/ui/Buttons/more-tiddler-actions",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-here": {
            "title": "$:/core/ui/Buttons/new-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
            "description": "{{$:/language/Buttons/NewHere/Hint}}",
            "text": "\\define newHereButtonTags()\n[[$(currentTiddler)$]]\n\\end\n\\define newHereButton()\n<$button tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<newHereButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewHere/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>"
        },
        "$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/core/ui/Buttons/new-journal-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
            "description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
            "text": "\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournalHere/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set></$set></$set>"
        },
        "$:/core/ui/Buttons/open-window": {
            "title": "$:/core/ui/Buttons/open-window",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
            "description": "{{$:/language/Buttons/OpenWindow/Hint}}",
            "text": "<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/OpenWindow/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permalink": {
            "title": "$:/core/ui/Buttons/permalink",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
            "description": "{{$:/language/Buttons/Permalink/Hint}}",
            "text": "<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Permalink/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permaview": {
            "title": "$:/core/ui/Buttons/permaview",
            "tags": "$:/tags/ViewToolbar $:/tags/PageControls",
            "caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
            "description": "{{$:/language/Buttons/Permaview/Hint}}",
            "text": "<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Permaview/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/DefaultTiddlers": {
            "title": "$:/DefaultTiddlers",
            "text": "GettingStarted\n"
        },
        "$:/temp/advancedsearch": {
            "title": "$:/temp/advancedsearch",
            "text": ""
        },
        "$:/snippets/allfields": {
            "title": "$:/snippets/allfields",
            "text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
        },
        "$:/config/AnimationDuration": {
            "title": "$:/config/AnimationDuration",
            "text": "400"
        },
        "$:/config/AutoSave": {
            "title": "$:/config/AutoSave",
            "text": "yes"
        },
        "$:/config/BitmapEditor/Colour": {
            "title": "$:/config/BitmapEditor/Colour",
            "text": "#444"
        },
        "$:/config/BitmapEditor/ImageSizes": {
            "title": "$:/config/BitmapEditor/ImageSizes",
            "text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
        },
        "$:/config/BitmapEditor/LineWidth": {
            "title": "$:/config/BitmapEditor/LineWidth",
            "text": "3px"
        },
        "$:/config/BitmapEditor/LineWidths": {
            "title": "$:/config/BitmapEditor/LineWidths",
            "text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
        },
        "$:/config/BitmapEditor/Opacities": {
            "title": "$:/config/BitmapEditor/Opacities",
            "text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
        },
        "$:/config/BitmapEditor/Opacity": {
            "title": "$:/config/BitmapEditor/Opacity",
            "text": "1.0"
        },
        "$:/config/DefaultSidebarTab": {
            "title": "$:/config/DefaultSidebarTab",
            "text": "$:/core/ui/SideBar/Open"
        },
        "$:/config/DownloadSaver/AutoSave": {
            "title": "$:/config/DownloadSaver/AutoSave",
            "text": "no"
        },
        "$:/config/Drafts/TypingTimeout": {
            "title": "$:/config/Drafts/TypingTimeout",
            "text": "400"
        },
        "$:/config/EditTemplateFields/Visibility/title": {
            "title": "$:/config/EditTemplateFields/Visibility/title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/tags": {
            "title": "$:/config/EditTemplateFields/Visibility/tags",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/text": {
            "title": "$:/config/EditTemplateFields/Visibility/text",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/creator": {
            "title": "$:/config/EditTemplateFields/Visibility/creator",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/created": {
            "title": "$:/config/EditTemplateFields/Visibility/created",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modified": {
            "title": "$:/config/EditTemplateFields/Visibility/modified",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modifier": {
            "title": "$:/config/EditTemplateFields/Visibility/modifier",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/type": {
            "title": "$:/config/EditTemplateFields/Visibility/type",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.title": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.of": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.of",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/revision": {
            "title": "$:/config/EditTemplateFields/Visibility/revision",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/bag": {
            "title": "$:/config/EditTemplateFields/Visibility/bag",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
            "text": "hide"
        },
        "$:/config/EditorTypeMappings/image/gif": {
            "title": "$:/config/EditorTypeMappings/image/gif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpeg": {
            "title": "$:/config/EditorTypeMappings/image/jpeg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpg": {
            "title": "$:/config/EditorTypeMappings/image/jpg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/png": {
            "title": "$:/config/EditorTypeMappings/image/png",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/x-icon": {
            "title": "$:/config/EditorTypeMappings/image/x-icon",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
            "title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
            "text": "text"
        },
        "$:/config/Manager/Show": {
            "title": "$:/config/Manager/Show",
            "text": "tiddlers"
        },
        "$:/config/Manager/Filter": {
            "title": "$:/config/Manager/Filter",
            "text": ""
        },
        "$:/config/Manager/Order": {
            "title": "$:/config/Manager/Order",
            "text": "forward"
        },
        "$:/config/Manager/Sort": {
            "title": "$:/config/Manager/Sort",
            "text": "title"
        },
        "$:/config/Manager/System": {
            "title": "$:/config/Manager/System",
            "text": "system"
        },
        "$:/config/Manager/Tag": {
            "title": "$:/config/Manager/Tag",
            "text": ""
        },
        "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
            "title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
            "text": "hide"
        },
        "$:/config/MissingLinks": {
            "title": "$:/config/MissingLinks",
            "text": "yes"
        },
        "$:/config/Navigation/UpdateAddressBar": {
            "title": "$:/config/Navigation/UpdateAddressBar",
            "text": "no"
        },
        "$:/config/Navigation/UpdateHistory": {
            "title": "$:/config/Navigation/UpdateHistory",
            "text": "no"
        },
        "$:/config/OfficialPluginLibrary": {
            "title": "$:/config/OfficialPluginLibrary",
            "tags": "$:/tags/PluginLibrary",
            "url": "http://tiddlywiki.com/library/v5.1.14/index.html",
            "caption": "{{$:/language/OfficialPluginLibrary}}",
            "text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
        },
        "$:/config/Navigation/openLinkFromInsideRiver": {
            "title": "$:/config/Navigation/openLinkFromInsideRiver",
            "text": "below"
        },
        "$:/config/Navigation/openLinkFromOutsideRiver": {
            "title": "$:/config/Navigation/openLinkFromOutsideRiver",
            "text": "top"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
            "text": "hide"
        },
        "$:/config/Performance/Instrumentation": {
            "title": "$:/config/Performance/Instrumentation",
            "text": "no"
        },
        "$:/config/SaveWikiButton/Template": {
            "title": "$:/config/SaveWikiButton/Template",
            "text": "$:/core/save/all"
        },
        "$:/config/SaverFilter": {
            "title": "$:/config/SaverFilter",
            "text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
        },
        "$:/config/Search/AutoFocus": {
            "title": "$:/config/Search/AutoFocus",
            "text": "true"
        },
        "$:/config/Search/MinLength": {
            "title": "$:/config/Search/MinLength",
            "text": "3"
        },
        "$:/config/SearchResults/Default": {
            "title": "$:/config/SearchResults/Default",
            "text": "$:/core/ui/DefaultSearchResultList"
        },
        "$:/config/ShortcutInfo/bold": {
            "title": "$:/config/ShortcutInfo/bold",
            "text": "{{$:/language/Buttons/Bold/Hint}}"
        },
        "$:/config/ShortcutInfo/cancel-edit-tiddler": {
            "title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
            "text": "{{$:/language/Buttons/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/excise": {
            "title": "$:/config/ShortcutInfo/excise",
            "text": "{{$:/language/Buttons/Excise/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-1": {
            "title": "$:/config/ShortcutInfo/heading-1",
            "text": "{{$:/language/Buttons/Heading1/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-2": {
            "title": "$:/config/ShortcutInfo/heading-2",
            "text": "{{$:/language/Buttons/Heading2/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-3": {
            "title": "$:/config/ShortcutInfo/heading-3",
            "text": "{{$:/language/Buttons/Heading3/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-4": {
            "title": "$:/config/ShortcutInfo/heading-4",
            "text": "{{$:/language/Buttons/Heading4/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-5": {
            "title": "$:/config/ShortcutInfo/heading-5",
            "text": "{{$:/language/Buttons/Heading5/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-6": {
            "title": "$:/config/ShortcutInfo/heading-6",
            "text": "{{$:/language/Buttons/Heading6/Hint}}"
        },
        "$:/config/ShortcutInfo/italic": {
            "title": "$:/config/ShortcutInfo/italic",
            "text": "{{$:/language/Buttons/Italic/Hint}}"
        },
        "$:/config/ShortcutInfo/link": {
            "title": "$:/config/ShortcutInfo/link",
            "text": "{{$:/language/Buttons/Link/Hint}}"
        },
        "$:/config/ShortcutInfo/list-bullet": {
            "title": "$:/config/ShortcutInfo/list-bullet",
            "text": "{{$:/language/Buttons/ListBullet/Hint}}"
        },
        "$:/config/ShortcutInfo/list-number": {
            "title": "$:/config/ShortcutInfo/list-number",
            "text": "{{$:/language/Buttons/ListNumber/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-block": {
            "title": "$:/config/ShortcutInfo/mono-block",
            "text": "{{$:/language/Buttons/MonoBlock/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-line": {
            "title": "$:/config/ShortcutInfo/mono-line",
            "text": "{{$:/language/Buttons/MonoLine/Hint}}"
        },
        "$:/config/ShortcutInfo/picture": {
            "title": "$:/config/ShortcutInfo/picture",
            "text": "{{$:/language/Buttons/Picture/Hint}}"
        },
        "$:/config/ShortcutInfo/preview": {
            "title": "$:/config/ShortcutInfo/preview",
            "text": "{{$:/language/Buttons/Preview/Hint}}"
        },
        "$:/config/ShortcutInfo/quote": {
            "title": "$:/config/ShortcutInfo/quote",
            "text": "{{$:/language/Buttons/Quote/Hint}}"
        },
        "$:/config/ShortcutInfo/save-tiddler": {
            "title": "$:/config/ShortcutInfo/save-tiddler",
            "text": "{{$:/language/Buttons/Save/Hint}}"
        },
        "$:/config/ShortcutInfo/stamp": {
            "title": "$:/config/ShortcutInfo/stamp",
            "text": "{{$:/language/Buttons/Stamp/Hint}}"
        },
        "$:/config/ShortcutInfo/strikethrough": {
            "title": "$:/config/ShortcutInfo/strikethrough",
            "text": "{{$:/language/Buttons/Strikethrough/Hint}}"
        },
        "$:/config/ShortcutInfo/subscript": {
            "title": "$:/config/ShortcutInfo/subscript",
            "text": "{{$:/language/Buttons/Subscript/Hint}}"
        },
        "$:/config/ShortcutInfo/superscript": {
            "title": "$:/config/ShortcutInfo/superscript",
            "text": "{{$:/language/Buttons/Superscript/Hint}}"
        },
        "$:/config/ShortcutInfo/underline": {
            "title": "$:/config/ShortcutInfo/underline",
            "text": "{{$:/language/Buttons/Underline/Hint}}"
        },
        "$:/config/SyncFilter": {
            "title": "$:/config/SyncFilter",
            "text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
        },
        "$:/config/TextEditor/EditorHeight/Height": {
            "title": "$:/config/TextEditor/EditorHeight/Height",
            "text": "400px"
        },
        "$:/config/TextEditor/EditorHeight/Mode": {
            "title": "$:/config/TextEditor/EditorHeight/Mode",
            "text": "auto"
        },
        "$:/config/TiddlerInfo/Default": {
            "title": "$:/config/TiddlerInfo/Default",
            "text": "$:/core/ui/TiddlerInfo/Fields"
        },
        "$:/config/TiddlerInfo/Mode": {
            "title": "$:/config/TiddlerInfo/Mode",
            "text": "popup"
        },
        "$:/config/Tiddlers/TitleLinks": {
            "title": "$:/config/Tiddlers/TitleLinks",
            "text": "no"
        },
        "$:/config/Toolbar/ButtonClass": {
            "title": "$:/config/Toolbar/ButtonClass",
            "text": "tc-btn-invisible"
        },
        "$:/config/Toolbar/Icons": {
            "title": "$:/config/Toolbar/Icons",
            "text": "yes"
        },
        "$:/config/Toolbar/Text": {
            "title": "$:/config/Toolbar/Text",
            "text": "no"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
            "text": "show"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
            "text": "hide"
        },
        "$:/config/shortcuts-mac/bold": {
            "title": "$:/config/shortcuts-mac/bold",
            "text": "meta-B"
        },
        "$:/config/shortcuts-mac/italic": {
            "title": "$:/config/shortcuts-mac/italic",
            "text": "meta-I"
        },
        "$:/config/shortcuts-mac/underline": {
            "title": "$:/config/shortcuts-mac/underline",
            "text": "meta-U"
        },
        "$:/config/shortcuts-not-mac/bold": {
            "title": "$:/config/shortcuts-not-mac/bold",
            "text": "ctrl-B"
        },
        "$:/config/shortcuts-not-mac/italic": {
            "title": "$:/config/shortcuts-not-mac/italic",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-not-mac/underline": {
            "title": "$:/config/shortcuts-not-mac/underline",
            "text": "ctrl-U"
        },
        "$:/config/shortcuts/cancel-edit-tiddler": {
            "title": "$:/config/shortcuts/cancel-edit-tiddler",
            "text": "escape"
        },
        "$:/config/shortcuts/excise": {
            "title": "$:/config/shortcuts/excise",
            "text": "ctrl-E"
        },
        "$:/config/shortcuts/heading-1": {
            "title": "$:/config/shortcuts/heading-1",
            "text": "ctrl-1"
        },
        "$:/config/shortcuts/heading-2": {
            "title": "$:/config/shortcuts/heading-2",
            "text": "ctrl-2"
        },
        "$:/config/shortcuts/heading-3": {
            "title": "$:/config/shortcuts/heading-3",
            "text": "ctrl-3"
        },
        "$:/config/shortcuts/heading-4": {
            "title": "$:/config/shortcuts/heading-4",
            "text": "ctrl-4"
        },
        "$:/config/shortcuts/heading-5": {
            "title": "$:/config/shortcuts/heading-5",
            "text": "ctrl-5"
        },
        "$:/config/shortcuts/heading-6": {
            "title": "$:/config/shortcuts/heading-6",
            "text": "ctrl-6"
        },
        "$:/config/shortcuts/link": {
            "title": "$:/config/shortcuts/link",
            "text": "ctrl-L"
        },
        "$:/config/shortcuts/list-bullet": {
            "title": "$:/config/shortcuts/list-bullet",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/list-number": {
            "title": "$:/config/shortcuts/list-number",
            "text": "ctrl-shift-N"
        },
        "$:/config/shortcuts/mono-block": {
            "title": "$:/config/shortcuts/mono-block",
            "text": "ctrl-shift-M"
        },
        "$:/config/shortcuts/mono-line": {
            "title": "$:/config/shortcuts/mono-line",
            "text": "ctrl-M"
        },
        "$:/config/shortcuts/picture": {
            "title": "$:/config/shortcuts/picture",
            "text": "ctrl-shift-I"
        },
        "$:/config/shortcuts/preview": {
            "title": "$:/config/shortcuts/preview",
            "text": "alt-P"
        },
        "$:/config/shortcuts/quote": {
            "title": "$:/config/shortcuts/quote",
            "text": "ctrl-Q"
        },
        "$:/config/shortcuts/save-tiddler": {
            "title": "$:/config/shortcuts/save-tiddler",
            "text": "ctrl+enter"
        },
        "$:/config/shortcuts/stamp": {
            "title": "$:/config/shortcuts/stamp",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/strikethrough": {
            "title": "$:/config/shortcuts/strikethrough",
            "text": "ctrl-T"
        },
        "$:/config/shortcuts/subscript": {
            "title": "$:/config/shortcuts/subscript",
            "text": "ctrl-shift-B"
        },
        "$:/config/shortcuts/superscript": {
            "title": "$:/config/shortcuts/superscript",
            "text": "ctrl-shift-P"
        },
        "$:/config/WikiParserRules/Inline/wikilink": {
            "title": "$:/config/WikiParserRules/Inline/wikilink",
            "text": "enable"
        },
        "$:/snippets/currpalettepreview": {
            "title": "$:/snippets/currpalettepreview",
            "text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch(colour)\n<$set name=\"swatchColour\" value={{##$colour$}}>\n<div class=\"tc-swatch\" style=<<swatchStyle>>/>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\">\n<<swatch foreground>>\n<<swatch background>>\n<<swatch muted-foreground>>\n<<swatch primary>>\n<<swatch page-background>>\n<<swatch tab-background>>\n<<swatch tiddler-info-background>>\n</div>\n"
        },
        "$:/snippets/download-wiki-button": {
            "title": "$:/snippets/download-wiki-button",
            "text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
        },
        "$:/language": {
            "title": "$:/language",
            "text": "$:/languages/en-GB"
        },
        "$:/snippets/languageswitcher": {
            "title": "$:/snippets/languageswitcher",
            "text": "{{$:/language/ControlPanel/Basics/Language/Prompt}} <$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
        },
        "$:/core/macros/CSS": {
            "title": "$:/core/macros/CSS",
            "tags": "$:/tags/Macro",
            "text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"/></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n  -webkit-box-shadow: $shadow$;\n     -moz-box-shadow: $shadow$;\n          box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n  -webkit-filter: $filter$;\n     -moz-filter: $filter$;\n          filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n  -webkit-transition: $transition$;\n     -moz-transition: $transition$;\n          transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n  -webkit-transform-origin: $origin$;\n     -moz-transform-origin: $origin$;\n          transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n"
        },
        "$:/core/macros/colour-picker": {
            "title": "$:/core/macros/colour-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<div style=\"background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/> \n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
        },
        "$:/core/macros/export": {
            "title": "$:/core/macros/export",
            "tags": "$:/tags/Macro",
            "text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
        },
        "$:/core/macros/image-picker": {
            "title": "$:/core/macros/image-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
        },
        "$:/core/macros/lingo": {
            "title": "$:/core/macros/lingo",
            "tags": "$:/tags/Macro",
            "text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
        },
        "$:/core/macros/list": {
            "title": "$:/core/macros/list",
            "tags": "$:/tags/Macro",
            "text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\")\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\">\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\">\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div>\n<$link to={{!!title}}>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$transclude>\n</$link>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\">\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div>\n&nbsp;\n</div>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n\\end\n\n\\define list-tagged-draggable-drop-actions()\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<tag>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<tag>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Assign the list field of the tag with the current ordering -->\n<$action-setfield $tiddler=<<tag>> $field=\"list\" $value=<<order>>/>\n<!-- Add the newly inserted item to the list -->\n<$action-listops $tiddler=<<tag>> $field=\"list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<$action-listops $tiddler=<<actionTiddler>> $tags=\"[<tag>]\"/>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,itemTemplate,elementTag:\"div\")\n<$set name=\"tag\" value=\"\"\"$tag$\"\"\">\n<$list filter=\"[<tag>tagging[]]\">\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=<<list-tagged-draggable-drop-actions>>>\n<$elementTag$ class=\"tc-droppable-placeholder\">\n&nbsp;\n</$elementTag$>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-tagged-draggable-drop-actions>>>\n<$elementTag$ class=\"tc-droppable-placeholder\">\n&nbsp;\n</$elementTag$>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n\\end\n"
        },
        "$:/core/macros/tabs": {
            "title": "$:/core/macros/tabs",
            "tags": "$:/tags/Macro",
            "text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/tag-picker": {
            "title": "$:/core/macros/tag-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\">\n$(actions)$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker(actions)\n<$set name=\"actions\" value=\"\"\"$actions$\"\"\">\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=\"$:/temp/NewTagName\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</$keyboard>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{$:/temp/NewTagName}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n$actions$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown\">\n<$list filter=\"[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list>\n<hr>\n<$list filter=\"[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list>\n</div>\n</$reveal>\n</div>\n</$set>\n\\end\n"
        },
        "$:/core/macros/tag": {
            "title": "$:/core/macros/tag",
            "tags": "$:/tags/Macro",
            "text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/> <$view tiddler=\"\"\"$tag$\"\"\" field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=\"\"\"$tag$\"\"\" icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=\"\"\"$tag$\"\"\" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
        },
        "$:/core/macros/thumbnails": {
            "title": "$:/core/macros/thumbnails",
            "tags": "$:/tags/Macro",
            "text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
        },
        "$:/core/macros/timeline": {
            "created": "20141212105914482",
            "modified": "20141212110330815",
            "tags": "$:/tags/Macro",
            "title": "$:/core/macros/timeline",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define timeline-title()\n<!-- Override this macro with a global macro \n     of the same name if you need to change \n     how titles are displayed on the timeline \n     -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}>\n<<timeline-title>>\n</$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
        },
        "$:/core/macros/toc": {
            "title": "$:/core/macros/toc",
            "tags": "$:/tags/Macro",
            "text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n  <$transclude field=\"caption\">\n    <$view field=\"title\"/>\n  </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n  <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n    <$vars item=<<currentTiddler>> path=\"\"\"$path$/$tag$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\">\n      <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n        <li class=<<toc-item-class>>>\n          <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n            <<toc-caption>>\n          </$list>\n          <$macrocall $name=\"toc-body\" tag=<<item>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>>/>\n        </li>\n      </$set>\n    </$vars>\n  </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\" \")\n<<toc-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"$itemClassFilter$\"\"\">>\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n    <$link>\n      <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n          {{$:/core/images/right-arrow}}\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n          {{$:/core/images/down-arrow}}\n        </$button>\n      </$reveal>\n      <<toc-caption>>\n    </$link>\n    <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n      <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n    </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n          {{$:/core/images/right-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n          {{$:/core/images/down-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-expandable-empty-message()\n<<toc-linked-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\">>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n  <ol class=\"tc-toc toc-expandable\">\n    <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n        <$macrocall $name=\"toc-unlinked-expandable-body\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\" >\n    <li class=<<toc-item-class>>>\n      <$link>\n          <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n          <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n            <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n              {{$:/core/images/right-arrow}}\n            </$button>\n          </$reveal>\n          <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n            <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n              {{$:/core/images/down-arrow}}\n            </$button>\n          </$reveal>\n        </$list>\n        <<toc-caption>>\n      </$link>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n        <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n          <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n            {{$:/core/images/right-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n        <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n          <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n            {{$:/core/images/down-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n      </$list>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"\"\"toc-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<<toc-linked-selective-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\">>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n  <ol class=\"tc-toc toc-selective-expandable\">\n    <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n        <$macrocall $name=toc-unlinked-selective-expandable-body tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>> >\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define toc-tabbed-selected-item-filter(selectedTiddler)\n[all[current]field:title{$selectedTiddler$}]\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{$selectedTiddler$}}>\n  <div class=\"tc-tabbed-table-of-contents\">\n    <$linkcatcher to=\"$selectedTiddler$\">\n      <div class=\"tc-table-of-contents\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:\"\"\"$selectedTiddler$\"\"\">>/>\n      </div>\n    </$linkcatcher>\n    <div class=\"tc-tabbed-table-of-contents-content\">\n      <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"nomatch\" text=\"\">\n        <$transclude mode=\"block\" tiddler=\"$template$\">\n          <h1><<toc-caption>></h1>\n          <$transclude mode=\"block\">$missingText$</$transclude>\n        </$transclude>\n      </$reveal>\n      <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"match\" text=\"\">\n        $unselectedText$\n      </$reveal>\n    </div>\n  </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=\"\"\"$selectedTiddler$\"\"\">\n  <$macrocall $name=\"toc-tabbed-external-nav\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" selectedTiddler=\"\"\"$selectedTiddler$\"\"\" unselectedText=\"\"\"$unselectedText$\"\"\" missingText=\"\"\"$missingText$\"\"\" template=\"\"\"$template$\"\"\"/>\n</$linkcatcher>\n\\end\n\n"
        },
        "$:/core/macros/translink": {
            "title": "$:/core/macros/translink",
            "tags": "$:/tags/Macro",
            "text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
        },
        "$:/snippets/minilanguageswitcher": {
            "title": "$:/snippets/minilanguageswitcher",
            "text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/minithemeswitcher": {
            "title": "$:/snippets/minithemeswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/modules": {
            "title": "$:/snippets/modules",
            "text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
        },
        "$:/palette": {
            "title": "$:/palette",
            "text": "$:/palettes/Vanilla"
        },
        "$:/snippets/paletteeditor": {
            "title": "$:/snippets/paletteeditor",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<table>\n<tbody>\n<$list filter=\"[all[current]indexes[]]\" variable=\"colourName\">\n<tr>\n<td>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<$edit-text index=<<colourName>> tag=\"input\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n</$set>\n"
        },
        "$:/snippets/palettepreview": {
            "title": "$:/snippets/palettepreview",
            "text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n<$transclude tiddler=\"$:/snippets/currpalettepreview\"/>\n</$set>\n"
        },
        "$:/snippets/paletteswitcher": {
            "title": "$:/snippets/paletteswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n<div class=\"tc-prompt\">\n<<lingo Prompt>> <$view tiddler={{$:/palette}} field=\"name\"/>\n</div>\n\n<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[description]]\"><div class=\"tc-chooser-item\"><$link to={{!!title}}><div><$reveal state=\"$:/palette\" type=\"match\" text={{!!title}}>&bull;</$reveal><$reveal state=\"$:/palette\" type=\"nomatch\" text={{!!title}}>&nbsp;</$reveal> ''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/></div><$transclude tiddler=\"$:/snippets/currpalettepreview\"/></$link></div>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/temp/search": {
            "title": "$:/temp/search",
            "text": ""
        },
        "$:/tags/AdvancedSearch": {
            "title": "$:/tags/AdvancedSearch",
            "list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
        },
        "$:/tags/AdvancedSearch/FilterButton": {
            "title": "$:/tags/AdvancedSearch/FilterButton",
            "list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
        },
        "$:/tags/ControlPanel": {
            "title": "$:/tags/ControlPanel",
            "list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
        },
        "$:/tags/ControlPanel/Info": {
            "title": "$:/tags/ControlPanel/Info",
            "list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
        },
        "$:/tags/ControlPanel/Plugins": {
            "title": "$:/tags/ControlPanel/Plugins",
            "list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
        },
        "$:/tags/EditTemplate": {
            "title": "$:/tags/EditTemplate",
            "list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
        },
        "$:/tags/EditToolbar": {
            "title": "$:/tags/EditToolbar",
            "list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
        },
        "$:/tags/EditorToolbar": {
            "title": "$:/tags/EditorToolbar",
            "list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
        },
        "$:/tags/Manager/ItemMain": {
            "title": "$:/tags/Manager/ItemMain",
            "list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
        },
        "$:/tags/Manager/ItemSidebar": {
            "title": "$:/tags/Manager/ItemSidebar",
            "list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
        },
        "$:/tags/MoreSideBar": {
            "title": "$:/tags/MoreSideBar",
            "list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Plugins]]",
            "text": ""
        },
        "$:/tags/PageControls": {
            "title": "$:/tags/PageControls",
            "list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
        },
        "$:/tags/PageTemplate": {
            "title": "$:/tags/PageTemplate",
            "list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
            "text": ""
        },
        "$:/tags/SideBar": {
            "title": "$:/tags/SideBar",
            "list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
            "text": ""
        },
        "$:/tags/TiddlerInfo": {
            "title": "$:/tags/TiddlerInfo",
            "list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
            "text": ""
        },
        "$:/tags/TiddlerInfo/Advanced": {
            "title": "$:/tags/TiddlerInfo/Advanced",
            "list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
        },
        "$:/tags/ViewTemplate": {
            "title": "$:/tags/ViewTemplate",
            "list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
        },
        "$:/tags/ViewToolbar": {
            "title": "$:/tags/ViewToolbar",
            "list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
        },
        "$:/snippets/themeswitcher": {
            "title": "$:/snippets/themeswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$view tiddler={{$:/theme}} field=\"name\"/>\n\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\"><div><$reveal state=\"$:/theme\" type=\"match\" text={{!!title}}>&bull;</$reveal><$reveal state=\"$:/theme\" type=\"nomatch\" text={{!!title}}>&nbsp;</$reveal> <$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$list>\n</$linkcatcher>"
        },
        "$:/core/wiki/title": {
            "title": "$:/core/wiki/title",
            "type": "text/vnd.tiddlywiki",
            "text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
        },
        "$:/view": {
            "title": "$:/view",
            "text": "classic"
        },
        "$:/snippets/viewswitcher": {
            "title": "$:/snippets/viewswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/StoryView/\n<<lingo Prompt>> <$select tiddler=\"$:/view\">\n<$list filter=\"[storyviews[]]\">\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>"
        }
    }
}
/*\
title: $:/core/modules/parsers/wikiparser/rules/wikilink.js
type: application/javascript
module-type: wikirule

Wiki text inline rule for wiki links. For example:

```
AWikiLink
AnotherLink
~SuppressedLink
```

Precede a camel case word with `~` to prevent it from being recognised as a link.

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";

exports.name = "wikilink";
exports.types = {inline: true};

exports.init = function(parser) {
	this.parser = parser;
	// Regexp to match
	this.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + "?" + $tw.config.textPrimitives.wikiLink,"mg");
};

/*
Parse the most recent match
*/
exports.parse = function() {
	// Get the details of the match
	var linkText = this.match[0];
	// Move past the macro call
	this.parser.pos = this.matchRegExp.lastIndex;
	// If the link starts with the unwikilink character then just output it as plain text
	if(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {
		return [{type: "text", text: linkText.substr(1)}];
	}
	// If the link has been preceded with a blocked letter then don't treat it as a link
	if(this.match.index > 0) {
		var preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,"mg");
		preRegExp.lastIndex = this.match.index-1;
		var preMatch = preRegExp.exec(this.parser.source);
		if(preMatch && preMatch.index === this.match.index-1) {
			return [{type: "text", text: linkText}];
		}
	}
	return [{type: "text", text: linkText}];
	return [{
		type: "link",
		attributes: {
			to: {type: "string", value: linkText}
		},
		children: [{
			type: "text",
			text: linkText
		}]
	}];
};

})();
[[首页]]
UA-46774526-2
下列条目已被导入:

# [[chenjinglei.jpeg]]
no
$:/languages/zh-Hans
{
    "tiddlers": {
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "高级查找"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "高级查找"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "取消"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "放弃对此条目的更改"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "克隆"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "克隆此条目"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "关闭"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "关闭此条目"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "全部关闭"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "关闭所有条目"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "关闭其他"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "关闭其他条目"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "控制台"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "开启控制台"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "删除"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "删除此条目"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "编辑"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "编辑此条目"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "加密"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "设置或清除保存此维基的密码"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "清除密码"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "清除密码且不加密保存此维基"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "设置密码"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "设置加密保存此维基的密码"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "导出所有条目"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "导出所有条目"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "导出此条目"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "导出此条目"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "导出条目"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "导出条目"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "收合条目"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "收合此条目的内容"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "展开条目"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "展开此条目的内容"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "收合其他条目"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "收合其他已开启条目的内容"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "收合所有条目"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "收合所有已开启条目的内容"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "收合栏"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "可选的收合与展开条目的长条按钮"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "展开所有条目"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "展开所有已开启条目的内容"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "全屏幕"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "进入或离开全屏模式"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "帮助"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "显示帮助面板"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "首页"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "开启首页条目"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "导入"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "导入许多类型的文件包括文本、图像、TiddlyWiki 或 JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "信息"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "显示此条目的信息"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "语言"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "选择用户介面语言"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "条目管理器"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "开启条目管理器"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "更多"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "更多动作"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "添加子条目"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "创建一个标签为此条目名称的新条目"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "添加日志"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "创建一个新的日志条目"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "添加子日志"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "创建一个标签含此条目名称的新日志条目"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "添加图像"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "创建一个新的图像条目"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "添加 Markdown 条目"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "创建一个新的 Markdown 条目"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "添加条目"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "创建一个新的条目"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "开启于新窗口"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "在新窗口中开启条目"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "调色板"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "选择调色板"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "引用链接"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "设置浏览器网址栏为直接链接到此条目"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "永久链接"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "设置浏览器网址栏为直接链接到当前所有已开启条目"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "打印页面"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "打印当前页面"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "刷新"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "执行维基的完全刷新"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "确定"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "确定对此条目的更改"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "保存变更"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "保存变更"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "查看模式"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "选择查看条目的视觉效果"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "隐藏侧边栏"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "隐藏侧边栏"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "显示侧边栏"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "显示侧边栏"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "标签管理"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "标签管理"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "时间戳记"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "选择修改是否更新时间戳记"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "时间戳记开启"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "条目被修改时,更新时间戳记"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "时间戳记关闭"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "条目被修改时,不更新时间戳记"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "布景主题"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "选择布景主题"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "粗体"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "套用粗体格式于所选文本"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "清除"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "清除图像为纯色"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "编辑器高度"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "自动调整高度以适合内容"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "固定高度︰"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "选择文本编辑器的高度"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "剪切"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "执行剪切"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "宏的名称︰"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "新条目的名称︰"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "替换剪切的文本为:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "宏"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "链接"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "嵌入"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "将新条目的标签设为此条目的名称"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "警示:条目已经存在"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "剪切所选文本到一个新条目"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "标题 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "套用标题级别 1 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "标题 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "套用标题级别 2 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "标题 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "套用标题级别 3 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "标题 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "套用标题级别 4 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "标题 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "套用标题级别 5 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "标题 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "套用标题级别 6 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "斜体"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "套用斜体格式于所选文本"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "线宽"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "设置绘画的线条宽度"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "链接"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "创建维基文字链接"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "符号清单"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "套用符号清单格式于包含所选文本的列"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "数字清单"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "套用数字清单格式于包含所选文本的列"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "等宽区块"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "套用等宽区块格式于包含所选文本的列"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "等宽"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "套用等宽字符格式于所选文本"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "不透明度"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "设置绘画的不透明度"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "绘画颜色"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "设置绘画的颜色"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "图片"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "插入图片"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "预览"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "显示预览窗格"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "预览类型"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "选择预览类型"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "引言"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "套用引言文本格式于包含所选文本的列"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "图像大小"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "高度︰"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "调整图像的大小"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "宽度:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "设置图像的大小"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "印记"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "添加您自己的"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "插入一个预配置的文本片段"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "在选单中显示的标题"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "片段的文本。(记得在 `caption` 栏位中添加一个说明性的标题)。"
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "删除线"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "套用删除线格式于所选文本"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "下标"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "套用下标格式于所选文本"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "上标"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "套用上标格式于所选文本"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "下划线"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "套用下划线格式于所选文本"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "高级"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "关于此 TiddlyWiki 的内部信息"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "视觉外观"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "定制您的 TiddlyWiki 外观。"
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "动画持续时间:"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "基本"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "标题含空白时请使用 &#91;&#91;双中括弧&#93;&#93;,或者您可用 <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">保留开启中的条目顺序</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "首页:"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "默认开启的条目:"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "您好!当前的语言:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "新日志条目的标签"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "新日志条目的内容"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "新日志条目的名称"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "被覆写的默认条目数量:"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "默认条目数量:"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "副标题:"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "系统条目数量:"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "标签数量:"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "一般条目数量:"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "标题:"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "编辑者署名:"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki 版本:"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "编辑器类型"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "编辑器"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "这些条目决定使用哪个编辑器来编辑特定条目类型。"
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "类型"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "信息"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "有关此 TiddlyWiki 的信息"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "在此输入快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "添加快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "管理键盘快捷键分配"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "尚无指定快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "删除快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "所有平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "仅 Macintosh 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "仅非 Macintosh 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "仅 Linux 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "仅非 Linux 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "仅 Windows 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "仅非 Windows 平台"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "已加载的模块"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "这些是当前已加载的模块之源码条目。斜体的模块则无源码条目,通常是因为它们是在引导过程中设置。"
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "调色板"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "复制"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "建议您修改前先复制此默认调色板"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "此默认调色板已被修改过"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "编辑"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "重置"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "隐藏编辑器"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "当前的调色板:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "显示编辑器"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "从官方插件库安装插件"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "获取更多插件"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "此插件已经安装版本 <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "禁用"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "重新加载页面时禁用此插件"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(已禁用)"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "无"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "启用"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "重新加载页面时启用此插件"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "安装"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "当前已安装的插件:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "语言"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "语言包插件"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "无 ''\"<$text text=<<currentTab>>/>\"''"
        },
        "$:/language/ControlPanel/Plugins/NoInformation/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInformation/Hint",
            "text": "未提供信息"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "尚未安装此插件"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "开启插件程式库"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "关闭插件程式库"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "重新安装"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "布景主题"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "布景主题插件"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "解析"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "在此您可以全域禁用或启用维基解析规则。要使更改生效,请保存并重新加载您的维基。禁用某些解析规则,会妨碍 <$text text=\"TiddlyWiki\"/> 正常运作。可使用[[安全模式|http://tiddlywiki.com/#SafeMode]]恢复正常操作。"
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "区块解析规则"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "内联解析规则"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "编译指示解析规则"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "允许下载保存模块的自动保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "启用下载保存模块的自动保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "下载保存模块"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "这些设置适用于兼容 HTML5 的下载保存模块"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "通用"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "这些设置适用于所有已载入的保存模块"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "用于通过保存模块将整个 TiddlyWiki 保存为单个文件的设置"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "高级设置"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "备份文件夹"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "备份"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot 保存模块"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "这些设置只适用于保存到 http://tiddlyspot.com 或兼容的远程服务器时。"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "上传文件名"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//默认之服务器网址 `http://<wikiname>.tiddlyspot.com/store.cgi`,可改为定制之服务器网址,例如 `http://example.com/store.php`。//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "密码"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "服务器网址"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "上传文件夹"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "用户"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "自动保存"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "不要自动保存变更"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "自动保存变更"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "当使用支持的保存模块时,在编辑期间尝试自动保存变更"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "驼峰式维基链接"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "您可以全域禁用驼峰式短语自动链接。须保存后重新加载,方才生效。"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "启用自动驼峰式链接"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "设置"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "默认侧边栏页签"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "指定默认显示的侧边栏页签"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "编辑器工具栏"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "启用或禁用编辑器工具栏︰"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "显示编辑器工具栏"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "条目信息面板模式"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "控制条目信息面板何时关闭︰"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "条目信息面板自动关闭"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "条目信息面板保持打开状态,直到明确关闭"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "这些高级设置让您定制 TiddlyWiki 的行为。"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "条目开启行为"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "从故事河//中//导航"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "从故事河//外//导航"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "开启于当前条目之上"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "开启于当前条目之下"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "开启于故事河的顶端"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "开启于故事河的底部"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "维基链接"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "选择是否要链接到尚未存在的条目"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "启用链接到佚失条目"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "网址栏导览"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "在浏览器网址栏导览到条目时的行为:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "不更新网址栏"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "包含目标条目"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "包括目标条目和当前已开启的条目序列"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "历史记录导览"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "当导览到条目时,更新浏览器历史记录:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "不更新历史记录"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "更新历史记录"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "性能检测"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "在浏览器的开发人员控制台,显示性能统计数据。需要重新加载才能生效。"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "启用性能检测"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "工具栏按钮样式"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "选择工具栏按钮的样式:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "无边框"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "方框"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "圆形"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "工具栏按钮"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "默认的工具栏按钮外观:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "包含图标"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "包含文本"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "条目标题"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "可选地显示条目标题为链接"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "不显示条目标题为链接"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "显示条目标题为链接"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "查看模式"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "当前的查看模式:"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "布景主题"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "当前的布景主题:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "条目栏位"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "这是本维基使用中的所有条目栏位(含系统条目的栏位,但默认条目的栏位除外)。"
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "编辑工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "选择将显示哪些按钮于条目的编辑模式工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "选择将显示哪些工具栏按钮"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "页面工具栏"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "选择将显示哪些按钮于主页面的工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "编辑器工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "选择将显示哪些按钮于编辑器工具栏。请注意,某些按钮只会出现在编辑某一类型的条目时。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "查看工具栏"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "选择将显示哪些按钮于条目的查看模式工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "下载完整副本"
        },
        "$:/core/zh-Hans/readme": {
            "title": "$:/core/zh-Hans/readme",
            "text": "此插件包含 TiddlyWiki 的核心组件,包括:\n\n* JavaScript 代码模块\n* 图标\n* 创建 TiddlyWiki 的用户介面所需的模板\n* 核心所使用的可当地语系化字串的英国英语 (''en-GB'') 翻译\n"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "周日"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "周一"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "周二"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "周三"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "周四"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "周五"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "周六"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "一月"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "二月"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "三月"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "四月"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "五月"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "六月"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "七月"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "八月"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "九月"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "十月"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "十一月"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "十二月"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "上午"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "下午"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "日"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "一"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "二"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "三"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "四"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "五"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "六"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "01月"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "02月"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "03月"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "04月"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "05月"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "06月"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "07月"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "08月"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "09月"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "10月"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "11月"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "12月"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> 天后"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> 小时后"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> 分钟后"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> 个月后"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 秒后"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> 秒后"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> 年后"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> 天前"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> 小时前"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> 分钟前"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> 个月前"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 秒前"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> 秒前"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> 年前"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "''all'' 筛选器算子的子算子。"
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "动画模块包含可用于 RevealWidget 的动画。"
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "一个位图编辑器工具栏操作。"
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "可于 Node.js 执行的指令。"
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "加入 `$tw.config` 的数据。"
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "个别筛选器算子方法。"
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "加入 `$tw` 的全域数据。"
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "透过 [[$:/temp/info-plugin]] 伪插件,发布系统信息。"
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "''is'' 筛选器算子的运算符。"
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "一般用途的 JavaScript 模块的通用模块类型。"
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript ''宏''定义。"
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "不同内容类型的解析器。"
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "于浏览器保存文件的不同的保存处理方法。"
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "启动时期的功能函数。"
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "查看模式用以自订 list 小部件的动画与行为。"
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "一个文本编辑器工具栏操作。"
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "转换不同内容类型至条目。"
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "定义个别条目栏位的行为。"
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "添加方法至 `$tw.Tiddler` 原型。"
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "于升级/导入过程中,套用升级处理至条目。"
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "添加方法至 `$tw.utils`。"
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "将特定于 Node.js 的方法添加到 '$tw.utils'。"
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "封装 DOM 渲染和刷新的小部件。"
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "添加方法至 `$tw.Wiki`。"
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "WikiText 解析器的个别的语法规则。"
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "警示背景"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "警示边框"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "警示高亮度"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "警示的低调前景"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "一般背景"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "引言条"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "默认按钮背景"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "默认按钮边框"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "默认按钮前景"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "代码背景"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "代码边框"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "代码前景"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "未保存变更指示器"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "下载按钮背景"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "下载按钮前景"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "拖动区背景"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "拖动区前景"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "下拉背景"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "下拉边框"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "选定的下拉页签背景"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "下拉页签背景"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "拖放背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "悬停外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "已造访过的外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "悬停外部链结前景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "已造访过的外部链结前景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "外部链结前景"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "一般前景"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "信息框背景"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "信息边框"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "信息框前景"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "模块背景幕"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "模块背景"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "模块边框"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "模块页脚背景"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "模块页脚边框"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "模块标题边框"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "一般低调前景"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "通知背景"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "通知边框"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "页面背景"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "pre 背景"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "pre 边框"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "主颜色"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "侧边栏按钮前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "悬停侧边栏控制项前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "侧边栏控制项前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "侧边栏前景阴影"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "侧边栏前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "悬停侧边栏低调前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "侧边栏低调前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "侧边栏选定页签背景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "侧边栏页签背景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "侧边栏选定页签边框"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "侧边栏页签边框"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "侧边栏页签分隔线"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "侧边栏选定页签前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "侧边栏页签前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "侧边栏悬停条目链结前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "侧边栏条目链结前景"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "网站标题前景"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "静态警示前景"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "选定的页签背景"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "页签背景"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "选定的页签边框"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "页签边框"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "页签分隔线"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "选定的页签前景"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "页签前景"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "表格边框"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "表格页脚背景"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "表格标题背景"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "标签背景"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "标签前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "条目背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "条目边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "悬停的条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "选定的条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "条目编辑器背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "条目编辑器边框图片"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "条目编辑器边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "条目编辑器中偶数栏位背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "条目编辑器中奇数栏位背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "条目信息面板背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "条目信息面板边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "条目信息面板页签背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "条目链结背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "条目链结前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "条目副标题前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "条目标题前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "工具栏 '添加条目' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "工具栏 '选项' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "工具栏 '保存' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "工具栏 '资讯' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "工具栏 '编辑' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "工具栏 '关闭' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "工具栏 '删除' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "工具栏 '取消' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "工具栏 '完成  按钮前景"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "未设标签的背景"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "非常低调前景"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "这是保存于主要的 TiddlyWiki 文件之外的外部条目。你可以编辑其标签和栏位,但不能直接编辑内容本身"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "输入此条目的内容"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "输出"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "删除栏位"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "删除栏位"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "添加"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "系统栏位"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "使用者栏位"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "栏位名称"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "添加栏位:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "栏位内容"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "这是一个默认条目。您做的任何更改将会覆盖来自 <<pluginLink>> 插件的默认版本。"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "这是一个修改过的默认条目。删除此条目可以还原为 <<pluginLink>> 插件中的默认版本。"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "添加"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "标签名称"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "标签清单"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "显示标签清单"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "请注意,避免在条目名称中使用这些字符:<<bad-chars>>"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "目标条目已经存在"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "将在其他条目的 //tags// 和 //list// 栏位中的 ''<$text text=<<fromTitle>>/>'' 改为 ''<$text text=<<toTitle>>/>''"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "内容类型清单"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "显示内容类型清单"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "删除内容类型"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "删除内容类型"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "内容类型"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "类型:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "静态 HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON 文件"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV 文件"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" 文件"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "外部图像条目的完整的 URI"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "条目的来源集的名称"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "显示于页签或按钮上的标题文字"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "条目的 CSS 颜色值"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "负责[[警示条目|AlertMechanism]]的组件名称"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "条目的创建日期"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "条目的创建者"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "用于缓存[[浏览历史列表|HistoryMechanism]]的最上层条目"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "插件的相依插件列表"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "插件的说明、描述"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "草稿条目,包含条目的标题、标签、栏位 ..."
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "草稿条目的标题"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "wizard 的注脚"
        },
        "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": {
            "title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against",
            "text": "于 [[$:/core/templates/static.content]] 使用的临时保存栏位"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "条目的标题含有与条目关联的图标"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "若设为 “yes”,表示条目应该被保存为一个 JavaScript 程序库"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "条目的列表,指定一些条目的标题清单"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "前条目名称将被添加到条目排序清单中的设置条目名称之前,或若此栏位存在但是空的,则在清单的起始位置"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "当前条目名称将被添加到条目排序清单的设置条目名称之后"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "条目的最近修改日期与时间"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "条目的最近修改者"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "具可读性的插件条目的名称"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "插件条目的优先级数值"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "插件条目的类型"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "TiddlyWiki 的发布日期"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "条目存放于服务器中的修订版本"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "条目的网址"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "一个 wizard 的副标题"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "条目的标签清单"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "条目的内文"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "条目的唯一名称"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "条目的内容类型"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "插件的版本信息"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "所有条目,不含系统条目"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "最近修改的条目,包含系统条目"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "最近修改的条目"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "所有标签,不含系统标签"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "缺失条目"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "草稿条目"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "孤立条目"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "系统条目"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "默认条目"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "被覆写的默认条目"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "系统标签"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "故事河中的条目,不含 ~$:/AdvancedSearch"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "非维基文字条目"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n欢迎使用 ~TiddlyWiki 及参与 ~TiddlyWiki 社群\n\n开始将重要资讯存放于 ~TiddlyWiki 之前,确认您可以可靠地保存变更是很重要的。详细资讯请参阅 http://tiddlywiki.com/#GettingStarted\n\n!! 设置此 ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\n请参阅[[控制台|$:/ControlPanel]]查看更多选项。"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "自动执行已配置的命令",
            "text": "生成指定的生成目标为当前 wiki。若未指定任何生成目标,则生成所有可用的目标。\n\n```\n--build <target> [<target> ...]\n```\n\n生成目标在 wiki 文件夹的 `tiddlywiki.info` 文件中定义。\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "清除用于后续加密的密码",
            "text": "清除用于后续加密的密码\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\n用法: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\n可用的命令:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\n取得关于某个命令的详细帮助:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "列出可用的 TiddlyWiki 版本",
            "text": "列出可用版本的名称和描述。您可以用 `--init` 命令创建一个指定版本的新维基。\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "通过网址从维基撷取条目",
            "text": "通过 HTTP/HTTPS 撷取一个或多个文件,并导入匹配筛选器的条目,可选的转换传入的名称。\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n```\n\n使用 \"file\" 选项为仅撷取单个文件,且第一个参数为要读取文件的网址。\n\n使用 \"files\" 选项为撷取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 \"remote-server\" 的一组具有字段 \"url\" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。\n\n`<import-filter>` 参数指定一个筛选器,用于确定要导入哪些条目。如果未提供,则默认为 `[all[tiddlers]]`。\n\n`<transform-filter>` 参数指定一个可选的筛选器,用于转换导入条目的名称。例如,`[addprefix[$:/myimports/]]` 会将前缀 `$:/myimports/` 加至每个名称。\n\n于 `--fetch` 之前使用 `--verbose` 命令,将在导入期间输出进度信息。\n\n请注意,TiddlyWiki 不会撷取一个已经加载插件的旧版本。\n\n以下示例从 http://tiddlywiki.com 取回所有非系统条目,并将其保存到一个 JSON 文件:\n\n```\ntiddlywiki --verbose --fetch file \"http://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "显示 TiddlyWiki 命令的说明",
            "text": "显示命令的帮助文本:\n\n```\n--help [<command>]\n```\n\n若省略命令名称,则显示可用命令的清单。\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "初始化一个新的 wiki 文件夹",
            "text": "初始化一个空的 [[WikiFolder|WikiFolders]] 的指定版本的副本。\n\n```\n--init <edition> [<edition> ...]\n```\n\n例如:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\n注意:\n\n* 若有需要,将创建 wiki 文件夹目录\n* 其中 \"edition\" 默认为 ''empty''\n* 若 wiki 文件夹不是空的,则初始化命令将失败\n* 初始化命令会删除 'tiddlywiki.info' 文件内所有 'includeWikis' 的定义。\n* 当指定多个版本时,这些版本于初始化后,将覆写早期版本共用的所有文件 (故此最终的 `tiddlywiki.info` 文件将是从最近的版本复制而得)\n* `--editions` 传回所有可用版本的清单。\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "从文件中加载条目",
            "text": "从 2.x.x TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` 或其他文件加载条目\n\n```\n--load <filepath>\n```\n\n从已加密的 TiddlyWiki 文件中加载条目,须使用 PasswordCommand 指定密码,例如:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\n请注意 TiddlyWiki 将不加载旧版本的已挂载的插件。\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "构建升级处理所需的程式库插件",
            "text": "为升级处理构建 `$:/UpgradeLibrary` 条目。\n\n升级程式库被格式化为一个插件类型为 `library` 的一般插件条目。它包含 TiddlyWiki5 存储库中所有可用的插件、布景主题和语言包的副本。\n\n此命令仅供内部使用;它只是与使用者构建一个自订的升级程序相关。\n\n```\n--makelibrary <title>\n```\n\n标题参数默认为 `$:/UpgradeLibrary`。\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "无此帮助项目"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "设置后续命令的基准输出文件夹",
            "text": "设置后续命令的基准输出文件夹,默认为该版本文件夹的 `output` 子文件夹。\n\n```\n--output <pathname>\n```\n\n若指定的路径是相对路径,则它是被解析相对于当前的工作文件夹。例如:`--output .` 將輸出文件夹設置為當前工作文件夹。"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "设置用以加密的密码",
            "text": "设置用以加密的密码\n\n```\n--password <password>\n```\n\n''请注意'':这不是用于提供 TiddlyWiki 具有密码保护功能。相反地,请看 [[ServerCommand]] 的密码选项说明。\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "呈现个别条目为指定的内容类型",
            "text": "呈现个别条目为指定的[[内容类型|ContentType]],默认为 `text/html` 且保存为指定的文件名。\n\n还可以指定一个模板,在这种情况下,\"currentTiddler\" 变量设为正在呈现的条目 (第一个参数值) 与模板条目合并呈现。\n\n也能可选地指定附加变量的名称与其值。\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>]\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n\n例如,以下命令通过使用核心模板 `$:/core/templates/exporters/JsonFile`,将所有匹配筛选器 `[tag[done]]` 的条目保存到名为 `output.json` 的 JSON 文件。\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "呈现符合筛选条件的条目为指定的内容类型",
            "text": "呈现符合筛选条的条目为指定的[[内容类型|ContentType]] (默认为 `text/html`) 与扩展名 (默认为 `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\n例如:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n在目标文件夹中的任何文件都会被删除,除非指定 ''noclean'' 旗标。若缺少目标文件夹,则以递归方式创建。"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "将条目的原始内容保存到一个文件",
            "text": "保存个别条目的原始文本或二进制格式到指定的文件名。\n\n```\n--savetiddler <title> <filename>\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "将一群条目的原始内容保存到一个文件夹",
            "text": "保存一群条目的原始文字或二进制格式到指定的文件夹。\n\n```\n--savetiddlers <filter> <pathname> [noclean]\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n保存指定的文件之前,会先清除输出目录的现有文件。可藉由指定 ''noclean'' 旗标,禁用该删除动作。\n\n自动创建在路径中任何缺少的文件夹。\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "提供一个 HTTP 服务器介面到 TiddlyWiki",
            "text": "在服务器中内置 TiddlyWiki5 是非常简单。虽与 TiddlyWeb 兼容,但不支持许多健全互联网面向的使用方式所需的功能。\n\n提供呈现一个指定条目,也可将个别条目编码成 JSON,且支持基本的 HTTP 操作 `GET`、`PUT` 及 `DELETE`.\n\n```\n--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix>\n```\n\n参数说明:\n\n* ''port'' - 服务的埠号 (默认为 \"8080\")\n* ''roottiddler'' - 服务的基本条目 (默认为 \"$:/core/save/all\")\n* ''rendertype'' - 呈现的基本条目内容类型 (默认为 \"text/plain\")\n* ''servetype'' - 服务的基本条目内容类型(默认为 \"text/html\")\n* ''username'' - 默认的编辑者署名\n* ''password'' - 可选的基本验证密码\n* ''host'' - 可选的主机名称, (默认为 \"127.0.0.1\" 或名为 \"localhost\")\n* ''pathprefix'' - 可选的路径前缀\n\n若指定密码参数,浏览器将提示使用者输入用户名与密码。注意,密码系以明码方式传递,因此并不适合一般正式用途。\n\n例如:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\n若您需要设置主机名称或路径前缀而不要求输入密码,则可以指定空字符串的使用者名和密码:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\n同时执行多个 TiddlyWiki 服务,须分别指定不同的埠号。\n"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "准备用于外部条目",
            "text": "//请注意此命令是试验性的,且可能会更改或在最终定稿前被替换//\n\n设置一群条目的指定栏位到 wikifying 范本条目的结果,其中的  `currentTiddler` 变数设置为各该条目。\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\n参数说明:\n\n* ''filter'' - 受影响的辨识条目的筛选条件\n* ''fieldname'' - 要修改的栏位(默认为 \"text\")\n* ''templatetitle'' - 该条目 wikify 到指定栏位。若为空白或丢失,则删除指定的栏位\n* ''rendertype'' - 要呈现的文本类型(默认为 \"text/plain\"; \"text/html\" 可以用于包含 HTML 标记))\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "从插件解开附属的条目",
            "text": "提取插件的附属条目,将其建立为一般条目:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "触发详细的输出模式",
            "text": "触发显示详细的命令执行过程,可用于调试\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "显示 TiddlyWiki 的版本编号",
            "text": "显示 TiddlyWiki 的版本编号。\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "下列条目已被导入:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "取消"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "这些条目已备妥导入:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "导入"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "选择"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "状态"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "条目"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "封锁的不兼容或过时插件"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "封锁的插件 (由于传入的 <<incoming>> 较现有版本 <<existing>> 旧)"
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "升级插件,从 <<incoming>> 到 <<upgraded>>"
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "封锁的暂存状态条目"
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "封锁的系统条目"
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "从 <$text text=<<from>>/> 迁移布景主题"
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "您貌似要加载为 ~TiddlyWiki 经典版设计的插件。请注意,[[这些插件无法运行于 TiddlyWiki 5.x.x 版|http://tiddlywiki.com/#TiddlyWikiClassic]]。检测到 ~TiddlyWiki 经典版插件:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "此条目包含二进制数据"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "此条目以经典版 TiddlyWiki 标记格式撰写,不完全兼容新版 TiddlyWiki 的格式,详细信息请参阅:http://tiddlywiki.com/static/Upgrading。"
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "升级"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "全部关闭"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "最近︰"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "您确定要放弃对条目 \"<$text text=<<title>>/>\" 的更改?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "您确定要删除条目 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "您确定要覆写条目 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "您即将要编辑默认条目,任何更改将会覆盖默认的系统,使未来的升级不寻常。您确定要编辑 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "计数"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "新条目"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "拖放到此处 (或按 ESC 键取消)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "取消"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "您要清除密码吗?当保存此维基时,这将删除已套用的加密"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "用户名称"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "密码"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "为此 TiddlyWiki 设置一个新密码"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "重复输入密码"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "密码不匹配"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "设定密码"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "错误"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "服务器上的文件已更改"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "筛选器错误"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "筛选器运算式中的语法错误"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "筛选器错误︰'is' 筛选器运算符的未知操作数"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "加载插件程式库时,发生错误"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "于 transclude 小部件中的递回嵌入错误"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "简要条目清单撷取错误"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "保存到 TWEdit 时,发生错误"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "保存时,发生错误"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest 错误代码"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "内部的 JavaScript 错误"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "喔,真是令人尴尬。建议刷新您的浏览器,重新启动 TiddlyWiki"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "栏位名称 \"<$text text=<<fieldName>>/>\" 包含无效字符,栏位名称只能包含小写字母、数字、底线 (`_`)、 连字号 (`-`) 和小数点 (`.`)"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部条目 ...</p><p>如果此信息未消失,可能您使用的浏览器不支援此配置的外部条目。请参阅 http://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "登录 TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(无)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "依标签筛选︰"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "反向顺序"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "搜寻"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "搜寻︰"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "标签"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "条目"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "显示︰"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "排序︰"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "颜色"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "栏位"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(无)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "图标"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "原始文字"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "标签"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "工具"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified 文字"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "佚失条目 \"<$text text=<<currentTiddler>>/>\" - 点击 {{$:/core/images/edit-button}} 可创建此条目"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "否"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "~TiddlyWiki 官方插件程式库"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "此为在 tiddlywiki.com 的 ~TiddlyWiki 官方插件程式库。由核心团队维护的插件、主题和语言包。"
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "请保存 {{$:/core/ui/Buttons/save-wiki}} 并刷新页面 {{$:/core/ui/Buttons/refresh}} 允许更改插件才能生效"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "YYYY年0MM月0DD日"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "此为系统条目"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "包括系统条目"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "颜色"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "计数"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "图标"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "信息"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "标签"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "YYYY年0MM月0DD日 0hh:0mm"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "在此 TiddlyWiki 您有尚未保存的变更"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "是"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>",
            "help": "http://tiddlywiki.com/",
            "text": "您的浏览器只支援手动保存。\n\n要保存更动的维基,右键点击下方的下载链结,选择\"下载文件\"或\"保存文件\",然后选择文件夹或文件名。\n\n//您可以藉由按一下 Ctrl 键(Windows)或 options/ alt 键(Mac OS X)中的链接,稍微加速操作。您不会被提示文件夹或文件名,您的浏览器可能无法辨认它的文件名 -- 在做其他任何事之前,您可能需要重新命名扩展名为 `.html` 的文件。//\n\n在智能型手机上,不允许下载文件,但您可以标记链结,然后从一台可以正常保存维基的台式机的维基同步你的书签。"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>",
            "help": "http://tiddlywiki.com/static/SavingChanges.html",
            "text": "您对此 wiki 的变更需被保存为 ~TiddlyWiki HTML 文件。\n\n!!! 桌面版浏览器\n\n# 从''文件''菜单点选 ''另存为''\n# 选定文件名及保存位置\n#* 某些浏览器依然需要明确指定文件格式为 ''Webpage, HTML only'' 或类似的。\n# 关闭此页签\n\n!!! 智能手机版浏览器\n\n# 为此页建立书签\n#* 若您已设置 iCloud 或 Google 同步,该书签将自动与之前开启及保存于您电脑的书签同步。\n# 关闭此页签\n\n//若您再次于 Mobile Safari 开启该书签,将会再看到此信息。若要继续使用该文件,只需点击下列 ''关闭'' 按钮//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "YYYY年0MM月0DD日"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "text": "日志"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "已保存 wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "开始保存 wiki"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "列表"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "筛选"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "以[[筛选表达式|http://tiddlywiki.com/static/Filters.html]]查找"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "所有匹配:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "条目名称匹配:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "查找"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "查找文本太短"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "默认"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "查找默认条目"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "标准"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "查找一般条目"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "系统"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "查找系统条目"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "全部"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "目录"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "草稿"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "缺失"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "更多"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "开启"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "孤立"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "最近"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "默认"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "系统"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "标签"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "未设标签"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "工具"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "类型"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "一个非线性的网页式笔记"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "我的 ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "依标签筛选的条目列表",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "宏的定义",
            "text": "\\define macroName(param1:\"默认值\",param2)\n宏的内容\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "4 x 3 的表格",
            "text": "|! | !一 | !二 | !三 | !四 |\n|! 1| | | | |\n|! 2| | | | |\n|! 3 | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "目录",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "主题调整"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "您可以调整 ''Vanilla'' 布景主题的某些样貌。"
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "选项"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "侧边栏布局"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "固定故事,浮动侧边栏"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "浮动故事,固定侧边栏"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "置顶标题"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "导致条目名称\"黏着\"于浏览器窗口的顶部。<br>注意︰此功能无法运作于 Chrome,且于 Firefox 中会导致一些布局问题"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "在代码区块中折行"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "设置"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "字型"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "代码字型"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "页面背景图像"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "页面背景图像附属"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "随条目卷动"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "固定于窗口"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "页面背景图像大小"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "自动"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "覆盖"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "包含"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "大小"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "字体大小"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "行高"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "条目本文的字体大小"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "条目本文的行高"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "故事左侧位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "故事河(条目区)的左边缘与页面左端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "故事顶端位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "故事河(条目区)的上边缘与页面顶端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "故事右侧位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "侧边栏的左边缘与页面左端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "故事的宽度"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "故事河的整体宽度"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "条目宽度"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "在故事河内"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "侧边栏中断点"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "故事河和侧边栏会并排显示的最小页面宽度"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "侧边栏宽度"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "在浮动-固定布局中,侧边栏的宽度"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "高级"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "无信息"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "插件明细"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "此插件包含以下预设条目:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "默认条目状态"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 不是一个默认条目"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 是一个默认条目"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "此条目定义于插件 <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "已被一般条目覆写"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "栏位"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "列表"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "此条目无指定列表"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "被列于"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "此条目未出现于其他条目的列表中"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "参照"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "无条目链接至此"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "子条目"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "无任何条目以此条目之标题为标签"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "工具"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript 源码",
            "name": "application/javascript",
            "group": "开发者"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON 数据",
            "name": "application/json",
            "group": "开发者"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "数据字典",
            "name": "application/x-tiddler-dictionary",
            "group": "开发者"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF 图像",
            "name": "image/gif",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG 图像",
            "name": "image/jpeg",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG 图像",
            "name": "image/png",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "结构式矢量图",
            "name": "image/svg+xml",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "图标",
            "name": "image/x-icon",
            "group": "图像"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "静态样式",
            "name": "text/css",
            "group": "开发者"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML 标记",
            "name": "text/html",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "纯文本",
            "name": "text/plain",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki 2",
            "name": "text/x-tiddlywiki",
            "group": "文本"
        },
        "$:/languages/zh-Hans/icon": {
            "title": "$:/languages/zh-Hans/icon",
            "type": "image/svg+xml",
            "text": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"1500\" height=\"1000\" viewBox=\"-5 -5 30 20\">\n<title>Flag of the People's Republic of China</title>\n<rect fill=\"#de2910\" x=\"-5\" y=\"-5\" width=\"30\" height=\"20\"/>\n<defs>\n<polygon id=\"s\" points=\"0,-513674 301930,415571 -488533,-158734 488533,-158734 -301930,415571\"\nfill=\"#ffde00\" transform=\"scale(0.0000019467600073)\"/>\n</defs>\n<use xlink:href=\"#s\" transform=\"scale(3)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,-3) rotate(-120.963756)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,-1) rotate(-98.130102)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,2) rotate(-74.054604)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,4) rotate(-51.3401917)\"/>\n</svg>\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/danielo/encryptTiddler/Changelog": {
            "title": "$:/plugins/danielo/encryptTiddler/Changelog",
            "text": "!! V2.1\n* Added control panel.\n* Added ability to batch encrypt and decrypt tiddlers.\n* Added some documentation an language strings.\n\n"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt",
            "caption": "Batch Encryption",
            "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n{{$:/plugins/danielo/encryptTiddler/language/batch}}\n\n<$linkcatcher to=\"$:/temp/encrypt/filter\">\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/encrypt/filter\" type=\"search\" tag=\"input\" default=\"\" placeholder=\"filter tiddlers\"/>\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/encrypt/filter\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n\n\n<$edit-text tag=\"input\" tiddler=\"$:/temp/password\" placeholder=\"password\" type=\"password\" default=\"\" col=\"4\"/><$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}>\n<$button message=\"tw-encrypt-tiddler\">\nEncrypt\n</$button>\n<$button message=\"tw-decrypt-tiddler\">\nDecrypt\n</$button>\n</$encryptTiddler>\n</$reveal>\n</div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]!sort[]] -[[$:/core/Filters/SystemTags]] -[[$:/core/Filters/AllTags]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/encrypt/filter}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/encrypt/filter}} template=\"$:/plugins/danielo/encryptTiddler/ui/listItemTemplate\"/>\n</div>\n</$set>\n</$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel",
            "tags": "$:/tags/ControlPanel",
            "caption": "Encrypt Tiddlers",
            "text": "\\define prefix(name) $:/plugins/danielo/encryptTiddler/control-panel/$name$\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]prefix[$:/plugins/danielo/encryptTiddler/control-panel/]]\" default=<<prefix \"batch-encrypt\">> state=\"$:/state/encryptTiddler/control-panel/tabs\">>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-batch-button": {
            "creator": "Danielo",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-batch-button",
            "text": "<span title=\"Encrypt/Decrypt tiddler\" class=\"pc-batch-controls\">\n<$reveal state=<<qualify \"$:/state/encrypt\">> type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>\n<$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$button message=\"tw-encrypt-tiddler\"  set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Encrypt</$button> <$button message=\"tw-decrypt-tiddler\" set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Decrypt</$button></span>\n</div>\n</$reveal></$encryptTiddler>\n</span>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-button": {
            "created": "20140405233000477",
            "creator": "Danielo",
            "modified": "20140608121335075",
            "tags": "$:/tags/ViewToolbar button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-button",
            "type": "text/vnd.tiddlywiki",
            "text": "<span title=\"Encrypt/Decrypt tiddler\"><$transclude tiddler=\"$:/plugins/danielo/encryptTiddler/openPopup\"/>\n</span><$encryptTiddler passwordTiddler=\"$:/temp/password\"><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$list filter=\"[all[current]!has[encrypted]]\"> <$button message=\"tw-encrypt-tiddler\"  set=\"$:/state/encrypt\" setTo=\"\" >Encrypt</$button></$list><$list filter=\"[is[current]has[encrypted]]\"> <$button message=\"tw-decrypt-tiddler\" set=\"$:/state/encrypt\" setTo=\"\" >Decrypt</$button></$list></span>\n</div>\n</$reveal></$encryptTiddler>\n"
        },
        "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler": {
            "created": "20140406153742691",
            "creator": "pepito",
            "description": "add the hability to encrypt individual tiddlers",
            "modified": "20141029152631265",
            "modifier": "Danielo Rodriguez",
            "tags": "index plugins",
            "title": "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler",
            "type": "text/vnd.tiddlywiki",
            "caption": "readme",
            "text": "This plugin adds the ability to encrypt your tiddlers individually. This have several advantages:\n\n* You can specify a different password for each tiddler if you want.\n* You don't have to encrypt your whole wiky.\n* If you forget your password, you only lose a tiddler.\n* It's possible to edit the tiddler content , tags and fields ''except the encrypt field'' after encryption. Decrypting your tiddler will restore it to its original state when you encrypted it. This way you can hide the encrypted tiddlers as a \"different\" thing.\n* You can even encrypt images.\n* You can have sensible data in a day to day wiky.\n* I didn't try this, but theoretically you can apply double encryption by encrypting your wiki too."
        },
        "$:/plugins/danielo/encryptTiddler/encrypttiddler.js": {
            "text": "/*\\\ntitle: $:/plugins/danielo/encryptTiddler/encrypttiddler.js\ntype: application/javascript\nmodule-type: widget\n\nencrypttiddler widget\n\n```\n\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar encryptTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t\t{type: \"tw-encrypt-tiddler\", handler: \"handleEncryptevent\"},\n\t\t\t{type: \"tw-decrypt-tiddler\", handler: \"handleDecryptevent\"},\n\t\t\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nencryptTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nencryptTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tconsole.log(\"Render\");\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nencryptTiddlerWidget.prototype.execute = function() {\n\t// Get attributes\n\t this.tiddlerTitle=this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t this.filter=this.getAttribute(\"filter\",undefined);\n \t this.passwordTiddler=this.getAttribute(\"passwordTiddler\");\n\t// Construct the child widgets\n\tconsole.log(this.targetTiddler);\n\t\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nencryptTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.filter) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nencryptTiddlerWidget.prototype.getTiddlersToProcess = function(){\n\tif(this.filter){ //we have a filter to work with\n\t\treturn this.wiki.filterTiddlers(this.filter);\n\t}else{ //single tiddler case\n\t\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t\treturn tiddler? [tiddler.fields.title] : [];\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleEncryptevent = function(event){\n\tvar password = this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields={text:\"!This is an encrypted Tiddler\",\n\t\t\t\t\t\t\t\t  encrypted:self.encryptFields(title,password)};\n\t\t\tself.saveTiddler(tiddler,fields);\n\t\t});\n\n\t}else{\n\t\tconsole.log(\"We did not find any tiddler to encrypt or password not set!\")\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleDecryptevent = function(event){\n\tvar password =this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields = self.decryptFields(tiddler,password);\n\t\t\tif(fields)self.saveTiddler(tiddler,fields);\n\t\t});\n\t}\n};\n\nencryptTiddlerWidget.prototype.saveTiddler=function(tiddler,fields){\n\tthis.wiki.addTiddler(  new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,this.clearNonStandardFields(tiddler), fields ) )\n}\n\nencryptTiddlerWidget.prototype.encryptFields = function (title,password){\n\tvar jsonData=this.wiki.getTiddlerAsJson(title);\n\treturn $tw.crypto.encrypt(jsonData,password);\n\n};\n\nencryptTiddlerWidget.prototype.decryptFields = function(tiddler,password){\n\t\tvar JSONfields =$tw.crypto.decrypt(tiddler.fields.encrypted,password);\n\t\tif(JSONfields!==null){\n\t\t\treturn JSON.parse(JSONfields);\n\t\t}\n\t\tconsole.log(\"Error decrypting \"+tiddler.fields.title+\". Probably bad password\")\n\t\treturn false\n};\n\nencryptTiddlerWidget.prototype.getPassword = function(){\n\tvar tiddler=this.wiki.getTiddler(this.passwordTiddler);\n\tif(tiddler){\n\t\tvar password=tiddler.fields.text;\n\t\tthis.saveTiddler(tiddler); //reset password tiddler\n\t\treturn password;\n\t}\n\n\treturn false\n};\n\n// This function erases every field of a tiddler that is not standard and also\n// the text field\nencryptTiddlerWidget.prototype.clearNonStandardFields =function(tiddler) {\n\tvar standardFieldNames = \"title tags modified modifier created creator\".split(\" \");\n\t\tvar clearFields = {};\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(standardFieldNames.indexOf(fieldName) === -1) {\n\t\t\t\tclearFields[fieldName] = undefined;\n\t\t\t}\n\t\t}\n\t\tconsole.log(\"Cleared fields \"+JSON.stringify(clearFields));\n\t\treturn clearFields;\n};\n\nexports.encryptTiddler = encryptTiddlerWidget;\n\n})();",
            "title": "$:/plugins/danielo/encryptTiddler/encrypttiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers",
            "description": "All encrypted tiddlers",
            "filter": "[has[encrypted]]",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers",
            "filter": "[!is[system]!has[encrypted]]",
            "description": "Non-encrypted normal tiddlers",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/language/batch": {
            "title": "$:/plugins/danielo/encryptTiddler/language/batch",
            "text": "Use below controls to encrypt or decrypt a bunch of tiddlers. Encryption ''controls are hidden'' until you type something in the search box. All listed tiddlers will be affected. The presence of a small padlock (<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>) next to the tiddler title indicates that particular tiddler is already encrypted."
        },
        "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate": {
            "title": "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n<$list filter=\"[all[current]has[encrypted]]\">\n<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>\n</$list>\n</$link>\n</div>"
        },
        "$:/plugins/danielo/encryptTiddler/openPopup": {
            "created": "20140406151910358",
            "creator": "Danielo",
            "modified": "20140608121417975",
            "modifier": "pepito",
            "tags": "button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/openPopup",
            "type": "text/vnd.tiddlywiki",
            "text": "<$reveal state=\"$:/state/encrypt\" type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/styles": {
            "created": "20140406110705085",
            "creator": "pepito",
            "modified": "20140608121510064",
            "modifier": "pepito",
            "tags": "$:/tags/Stylesheet encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/styles",
            "type": "text/plain",
            "text": ".tw-password-field {\n\tdisplay: inline-block;\n\twidth: 55%;\n  font-size:1em;\n  line-height:0;\n  margin:0;\n\tpadding-left:7%;\n}\n\n.pc-batch-controls .tw-crypt-dropdown{\n\tright: 0px;\n}\n\n.pc-batch-controls{\n\t\tposition:relative;\n}\n\n.pc-listItem-lock svg{\n\theight: 1em;\n\twidth: 1em;\n\tfill: #aaaaaa;\n}\n\n/*It is for use in combination with tc-block-dropdown */\n.tw-crypt-dropdown{\n      line-height:0;\n\t\t\tpadding-left:5px;\n\t\t\t}\n\n.tw-password-field input{\n       font-size:0.5em;\n\n}\n\n.tw-crypt-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n.tw-crypt-button button{\n\tfont-size:0.5em;\n}\n"
        },
        "$:/plugins/danielo/encryptTiddler/unlocked": {
            "created": "20140406101339943",
            "creator": "danielo515",
            "modified": "20140608121532690",
            "modifier": "danielo515",
            "tags": "encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/unlocked",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tc-image-button\"\n\t viewBox=\"0 0 100 100\" style=\"enable-background:new 0 0 100 100;\" xml:space=\"preserve\">\n<g>\n\t<path d=\"M77.555,50H35.304V31.63c0-4.057,1.435-7.521,4.305-10.391c2.87-2.87,6.333-4.305,10.391-4.305\n\t\tc4.056,0,7.52,1.435,10.39,4.305s4.305,6.335,4.305,10.391c0,0.996,0.363,1.857,1.091,2.583c0.727,0.729,1.588,1.09,2.583,1.09\n\t\th3.674c0.995,0,1.856-0.361,2.583-1.09c0.727-0.727,1.091-1.588,1.091-2.583c0-7.079-2.517-13.136-7.549-18.17\n\t\tC63.136,8.428,57.08,5.912,50,5.912c-7.081,0-13.137,2.516-18.169,7.548c-5.033,5.034-7.549,11.091-7.549,18.17V50h-1.837\n\t\tc-1.531,0-2.833,0.536-3.904,1.608c-1.072,1.072-1.607,2.372-1.607,3.902v33.067c0,1.532,0.535,2.832,1.607,3.904\n\t\tc1.071,1.072,2.372,1.608,3.904,1.608h55.11c1.53,0,2.832-0.536,3.904-1.608c1.071-1.072,1.607-2.372,1.607-3.904V55.51\n\t\tc0-1.529-0.536-2.83-1.607-3.902C80.387,50.536,79.085,50,77.555,50z M54.315,72.937V83.72c0,2.173-1.762,3.935-3.935,3.935H49.62\n\t\tc-2.173,0-3.935-1.762-3.935-3.935V72.937c-2.31-1.443-3.852-4.001-3.852-6.925c0-4.511,3.657-8.167,8.167-8.167\n\t\ts8.167,3.657,8.167,8.167C58.167,68.937,56.625,71.495,54.315,72.937z\"/>\n</g>\n</svg>\n"
        }
    }
}




{}


{
    "originalVersion": "0.13.4+9665",
    "dataStructureState": "0.11.0",
    "showWelcomeMessage": false
}
{
    "tiddlers": {
        "$:/plugins/telmiger/EditorCounter/counter.js": {
            "created": "20170207230719552",
            "creator": "Thomas Elmiger",
            "text": "/*\\\ntitle: $:/plugins/telmiger/EditorCounter/counter.js\ntype: application/javascript\nmodule-type: widget\n\nversion: 0.6.3\n\nCount the number of words or characters in a tiddler/field/input string – Autosave while editing\n\nUsage: see the plugin’s readme.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CounterWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCounterWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM – reset autosave attributes\n*/\nCounterWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\t// autosave attributes\n\tthis.diffTotal = 0;\n\tthis.saveNow = false;\n\t// calculate state \n\tthis.execute();\n\tif(this.mode == \"autosave\") {\n\t\t// store the number of last saved characters\n\t\tthis.lastSavedCount = this.currentCount;\n\t\tthis.diffLastCount = this.currentCount;\n\t} \n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tvar domNode = this.document.createElement(\"span\");\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCalculate the numbers\n*/\nCounterWidget.prototype.getLength = function(text) {\n\tvar result = 0;\n\tswitch(this.mode) {\n\t\tcase \"character\":\n\t\t\tresult = text.length.toString();\n\t\t\tbreak;\n\t\tcase \"autosave\":\n\t\t\tresult = text.length.toString();\n\t\t\t// sum up difference since last count\n\t\t\tthis.diffTotal += this.checkAutosave(result);\n\t\t\t// check saving limit\n\t\t\tthis.saveNow = (this.diffTotal >= this.saveLimit) ? true : false;\n\t\t\tbreak;\n\t\tcase \"word\":\n\t\t\tif(text.match(/\\w+/g)) {\n\t\t\t\tresult = text.match(/\\w+/g).length.toString();\n\t\t\t} else {\n\t\t\t\tresult = 0;\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault: // \"?!\"\n\t\t\tresult = \"mode undefined\";\n\t}\n\treturn result;\n}\n\n/*\nSet autosave \n*/\nCounterWidget.prototype.checkAutosave = function(textlength) {\n\t// calculate difference since last count\n\tthis.diffChars = Math.abs(textlength - this.diffLastCount);\n\t// store text length\n\tthis.diffLastCount = textlength;\n\treturn this.diffChars;\n}\n\n/*\nGet the colors as an array\n*/\nCounterWidget.prototype.getColors = function() {\n\tvar color_array1 = this.colors.split(',');\n\tvar i;\n\tcolor_array1.sort(function sortfunction(a, b){\n\t\treturn a.split(':')[1] - b.split(':')[1];\n\t});\n\tfor(i = 0; i < color_array1.length; i++) {\n\t\tthis.color_array[i] = color_array1[i].split(':')[0];\n\t\tthis.count_array[i] = color_array1[i].split(':')[1];\n\t}\n}\n\n/*\nGet the numbers\n*/\nCounterWidget.prototype.getNumber = function() {\n\t// Count letters or words as appropriate.\n\tvar result = 0;\n\tif(this.countText) {\n\t\t// text supplied as parameter \n\t\tresult = this.getLength(this.countText);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.tiddler);\n\t\tvar fieldContent = tiddler.getFieldString(this.field);\n\t\tif(fieldContent) {\n\t\t\tresult = this.getLength(fieldContent);\n\t\t} else {\n\t\t\tresult = 0;\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nCounterWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.mode = this.getAttribute(\"mode\",\"character\");\n\tthis.saveLimit = this.getAttribute(\"savelimit\",200);\n\tthis.tiddler = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.field = this.getAttribute(\"field\",\"text\");\n\tthis.countText = this.getAttribute(\"text\");\n\tthis.colors = this.getAttribute(\"colors\");\n\tthis.stateTiddler = this.getAttribute(\"colorState\");\n\t// Count letters or words as appropriate.\n\tthis.currentCount = this.getNumber();\n\tthis.diffChars = 0;\n\t//Find the color cut-offs, if any.\n\tif(this.colors) {\n\t\tthis.color_array = [];\n\t\tthis.count_array = [];\n\t\tvar i;\n\t\tthis.getColors();\n\n\t\t// set the color if the counter is high enough. The color with the largest value that is less than this.currentCount wins.\n\t\tfor(i = 0; i < this.color_array.length; i++) {\n\t\t\tif(Number(this.currentCount) >= Number(this.count_array[this.color_array.length - 1 - i])) {\n\t\t\t\tif(this.stateTiddler) {\n\t\t\t\t\tthis.wiki.setText(this.stateTiddler,\"text\",undefined,this.color_array[this.color_array.length -1 - i]);\n\t\t\t\t}\n\t\t\t\tthis.currentCount = '@@color:' + this.color_array[this.color_array.length -1 - i] + ';' \n\t\t\t\t\t+ this.currentCount + '@@';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(this.stateTiddler && i === this.color_array.length-1) {\n\t\t\t\tthis.wiki.setText(this.stateTiddler,\"text\",undefined,'');\n\t\t\t}\n\t\t}\n\t}\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",this.currentCount,{parseAsInline: true});\n\tvar parseTreeNodes = parser ? parser.tree : [];\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCounterWidget.prototype.refresh = function(changedTiddlers) {\n\tvar refreshed = false;\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount && this.mode !== \"autosave\") {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\trefreshed = true;\n\t}\n\tif(this.saveNow) {\n\t\t// Trigger an autosave and refresh\n\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\tthis.refreshSelf();\n\t\trefreshed = true;\n\t} \n\treturn refreshed;\n};\n\nexports[\"editor-counter\"] = CounterWidget;\n\n})();\n",
            "type": "application/javascript",
            "title": "$:/plugins/telmiger/EditorCounter/counter.js",
            "tags": "EditorCounter",
            "module-type": "widget",
            "modifier": "Thomas Elmiger",
            "modified": "20170513200904421"
        },
        "$:/plugins/telmiger/EditorCounter/icon": {
            "created": "20170209074404836",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64.003\" height=\"64.003\" viewBox=\"-500.5 395.5 64.003 64.003\"><path d=\"M-468.5 396.5l26.426 15.5v31l-26.425 15.5-26.426-15.5v-31l26.427-15.5z\"/><path fill=\"#FFF\" d=\"M-485.996 419.088h34.99v16.824h-34.99z\"/><path fill=\"#E2001A\" d=\"M-468.5 405.5c-12.15 0-22 9.85-22 22s9.85 22 22 22 22-9.85 22-22-9.85-22-22-22zm13.11 21.637c-1.022.682-2.674 1.023-4.954 1.023h-2.838c-1.505 0-2.598.3-3.28.9-.68.6-1.22 1.804-1.622 3.615 0 0-.063.526-.178.526s-.13-.31-.184-.562c-.056-.263-.14-.59-.256-.977-.224-.758-.447-1.332-.67-1.72-.27-.482-.613-.87-1.024-1.165-.412-.294-.883-.47-1.413-.528l-.74-.088h-3.637c-2.178 0-3.796-.343-4.855-1.024-1.764-1.12-2.71-3.24-2.842-6.357-.01-.25 0-.48.047-.772h.208c.142 1.41 1.304 2.502 2.158 3.274.853.77 2.222 1.155 4.104 1.155h3.3c1.896 0 3.28.436 4.158 1.306.79.786 1.31 2.017 1.56 3.69.028.183.012.263.064.263.053 0 .04-.09.06-.278.253-2.173 1.094-3.627 2.522-4.363.88-.46 2.28-.676 4.196-.652l2.257.035c1.527.023 2.814-.278 3.86-.908 1.046-.63 2.285-1.803 2.425-3.52h.21c.065.17.057.56.045.828-.13 3.105-1.023 5.206-2.68 6.3z\"/></svg>",
            "type": "image/svg+xml",
            "title": "$:/plugins/telmiger/EditorCounter/icon",
            "tags": "",
            "modified": "20170209074423973"
        },
        "$:/plugins/telmiger/EditorCounter/readme": {
            "created": "20170209064758307",
            "creator": "Thomas Elmiger",
            "text": "!! Count Your Texts & Autosave\nThe [[EditorCounter plugin|https://tid.li/tw5/plugins.html#EditorCounter]] provides counters for words and characters in the edit view of your tiddlers. And it can save your texts automagically in the background while you work.\n\n!!! The counters\n* In edit mode users can see stats concerning the tiddler’s text and title fields. The numbers are updated whenever they pause typing.\n* Counters for words and characters can be activated in the [[plugin settings|$:/plugins/telmiger/EditorCounter/settings]].\n* The colours of the counters change at some predefined numbers.\n** Settings for colors and color limits are not available in the plugin configuration. <br>Workaround: edit [[the template|$:/plugins/telmiger/EditorCounter/EditTemplate]].\n\n!!! Autosave\n* When activated in the [[plugin settings|$:/plugins/telmiger/EditorCounter/settings]], //autosave// will try to save the wiki in the background during editing: whenever a predefined number of characters has been added or removed, a save is triggered.\n** As an option you can show a checkbox in the editor to pause/activate automatic saving.\n\n!!! Parameters\n\n|!Parameter |!Description |\n|colors |Optionally, define an array of color and number pairs to set minimal color limits. |\n|colorState |Optional state tiddler to save the color value. |\n|field |Calculate for the text in this field. |\n|mode |Entity to calculate: //word// or //character// or //autosave//. Defaults to \"character\". |\n|savelimit |A number of character changes after which //autosave// is performed. Default value: 200 |\n|text |Calculate this text. |\n|tiddler |Optional title of a tiddler to take the field from. Defaults to current tiddler. |\n\n!!! Widget usage\nThis plugin is based on a similar [[solution by Jed Carty|$:/plugins/telmiger/EditorCounter/credits]] – many thanks! \n\nThe widget can be used in other contexts than the plugin. The usage would be very similar to [[Jed’s examples on ooktech.com|http://ooktech.com/jed/ExampleWikis/WordCount/#%24%3A%2Fplugins%2Finmysocks%2FWordCount%2FWord%20Count%20Widget]] \n\nKnown differences: instead of `<$word-count` start with `<$editor-counter`. Default mode is //character//.\n\n!!!! Widget examples\n\n```\n<$editor-counter tiddler=SomeTiddler field=some_field mode=word/>\n<$editor-counter tiddler=SomeTiddler mode=character colors=\"blue:10,green:50,red:100\"/>\n<$editor-counter text=\"some text string\" mode=character colorState=\"$:/state/someTextColor\" colors=\"blue:10,green:50\"/>\n<$editor-counter mode=autosave savelimit=300/>\n```\n",
            "title": "$:/plugins/telmiger/EditorCounter/readme",
            "tags": "EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170513193917595"
        },
        "$:/plugins/telmiger/EditorCounter/settings": {
            "text": "!! Counter Settings\nActivate counters here. Your choice will be visible below the text field in edit mode.\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/characters\" field=\"text\" checked=\"yes\" unchecked=\"no\"> Character counter</$checkbox>\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/words\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> Word counter</$checkbox>\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/title\" field=\"text\" checked=\"yes\" unchecked=\"no\"> Title characters counter</$checkbox>\n\n!! Autosave Settings\nAutosave will try to save your wiki in the background after adding or removing 200 characters. You can change this value below.\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/autosave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> Autosave</$checkbox>\n every <$edit-text tiddler=\"$:/plugins/telmiger/EditorCounter/settings/autosave\" field=\"limit\" size=\"4\"/> characters.\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/autosave-pause\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> Show checkbox to start/pause autosave in editor</$checkbox>\n\n<br>''\n\n<$button message=\"tm-save-wiki\" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Hint}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>\n\n''<br>\n\nNote: ''All'' characters are counted as entered in the editor, regardless if they are invisible in the result or if they produce more text based on data or transclusion.",
            "title": "$:/plugins/telmiger/EditorCounter/settings",
            "tags": "EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170513185158209",
            "creator": "Thomas Elmiger",
            "created": "20170208062643245"
        },
        "$:/plugins/telmiger/EditorCounter/settings/characters": {
            "created": "20170208063042363",
            "creator": "Thomas Elmiger",
            "text": "yes",
            "title": "$:/plugins/telmiger/EditorCounter/settings/characters",
            "modifier": "Thomas Elmiger",
            "modified": "20170209071527563",
            "tags": "EditorCounter"
        },
        "$:/plugins/telmiger/EditorCounter/settings/title": {
            "created": "20170208211524752",
            "creator": "Thomas Elmiger",
            "text": "yes",
            "title": "$:/plugins/telmiger/EditorCounter/settings/title",
            "modified": "20170209071517463",
            "modifier": "Thomas Elmiger",
            "tags": "EditorCounter"
        },
        "$:/plugins/telmiger/EditorCounter/settings/words": {
            "text": "no",
            "title": "$:/plugins/telmiger/EditorCounter/settings/words",
            "tags": "EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170216003921105",
            "creator": "Thomas Elmiger",
            "created": "20170208063040756"
        },
        "$:/plugins/telmiger/EditorCounter/EditTemplate": {
            "text": "<span style=\"display:block; margin-top:-18px; margin-bottom:18px;\">\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/characters\">\n<$editor-counter tiddler=<<currentTiddler>> colors='black:0,gray:140,green:300,indianred:800,red:1600'/> characters </$reveal>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/autosave\">\n<span class=\"tc-muted\"><span class=\"tc-dirty-indicator\">•</span> <$editor-counter mode=autosave savelimit={{$:/plugins/telmiger/EditorCounter/settings/autosave!!limit}}/> saved</span>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/characters\"> &nbsp;&nbsp; \n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/words\">\n<$editor-counter mode=word colors='black:0,gray:200,green:300,indianred:1000,red:2000'/> words &nbsp;&nbsp; \n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/autosave-pause\">\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/autosave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> Autosave</$checkbox>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/autosave\">\n (uncheck to pause)\n</$reveal>\n</$reveal>\n</span>\n\n<!--\n* Show the number of characters and/or words entered in edit mode.\n* Show the number of characters at last autosave (autosave at a character difference as defined in settings).\n-->",
            "title": "$:/plugins/telmiger/EditorCounter/EditTemplate",
            "tags": "$:/tags/EditTemplate EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170513184811368",
            "list-before": "$:/core/ui/EditTemplate/type",
            "creator": "Thomas Elmiger",
            "created": "20170126185919666"
        },
        "$:/plugins/telmiger/EditorCounter/TitleTemplate": {
            "text": "<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/title\">\n<span title=\"Title length\" style=\"display:block; text-align:right; margin: -22px 3px 2px 0; opacity:0.6;\">\n<$editor-counter tiddler=<<currentTiddler>> field=\"draft.title\" colors='green:20,indianred:30,red:40'/> chars\n</span>\n</$reveal>\n\n<!--\nShow the number of characters in the title\n-->",
            "title": "$:/plugins/telmiger/EditorCounter/TitleTemplate",
            "tags": "$:/tags/EditTemplate EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170303172302480",
            "list-before": "$:/core/ui/EditTemplate/tags",
            "creator": "Thomas Elmiger",
            "created": "20170213190419968"
        },
        "$:/plugins/telmiger/EditorCounter/settings/autosave": {
            "created": "20170303132537685",
            "creator": "Thomas Elmiger",
            "text": "no",
            "title": "$:/plugins/telmiger/EditorCounter/settings/autosave",
            "modifier": "Thomas Elmiger",
            "modified": "20170304110651863",
            "limit": "200",
            "tags": "EditorCounter"
        },
        "$:/plugins/telmiger/EditorCounter/credits": {
            "text": "!! Credits\n\nMany thanks to Jed for his blueprint widget and demo site, originally on http://ooktech.com/jed/ExampleWikis/WordCount/ as well as to Skeeve who obviousliy contributed the original macro version Jed based his solution on.\n\n* http://ooktech.com/TiddlyWiki/\n* http://ooktech.com/TiddlyWiki/WordCount/\n\n//Powered by the fantastic TiddlyWiki community.//\n",
            "title": "$:/plugins/telmiger/EditorCounter/credits",
            "tags": "EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170304104718649",
            "creator": "Thomas Elmiger",
            "created": "20170304102433909"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/telmiger/lib/language": {
            "text": "$:/plugins/telmiger/lib/languages/en-GB",
            "created": "20160820133735127",
            "creator": "Thomas Elmiger",
            "modified": "20160917153239827",
            "modifier": "Thomas Elmiger",
            "priority": "2",
            "tags": "ToDoDone ToDoComponents",
            "title": "$:/plugins/telmiger/lib/language",
            "todo-deadline": "",
            "todo-done": "20160820234641 20160821004547"
        },
        "$:/plugins/telmiger/lib/languages/en-GB": {
            "created": "20160820190056478",
            "creator": "Thomas Elmiger",
            "text": "ID:English\ndate-created-tmpl: {{$:/language/Tiddler/DateFormat}}\ndate-created-tmpl-info: DDth MMM YYYY at hh12:0mmpm\ndate-deadline-tmpl: YYYY-0MM-0DD\n<!-- strings: strigs start here -->\nAdd-tag: Add tag\nAdd-tags-from-the-list: Add tags from the list\nall: all\nall-projects: all projects\narchive: archive\nAre-you-sure?: Are you sure?\nChange-deadline: Change deadline\nchange-priority: Change priority\nchange-priority-to: set priority to\nClick-to-edit-title: Click the title to edit!\nclose: Close\nClose: Close\ndays-back: days back\nDetails: Show details\nDo-it-again: Do it again\nDo-now: Do now\nDone: Done\nEdit: Edit\nHide-list: Hide list\nlate: late\nManage-tags: Manage tags\nMove-down: Move down\nMove-up: Move up\nNew-ToDo-Item: New ToDo Item\nNext week: Next week\nno.: no.\nNothing-to-do-?: Nothing to do? Create a task using this button\nPick-a-task-: Pick a task from the list below using this button\nPrint-window-hint: Open in new window to print\nProject: Project\nRecycle: Recycle\nRelax-Nothing-to-do: Relax. Nothing to do.\nRemove-deadline: Remove deadline\nRemove-tags?: Remove tags?\nReset: Reset\nsearch: search …\nSend-it-down: Send it down\nSet-deadline: Set deadline\nShow-list: Show list\nSort-by-deadline: Sort by deadline\nSort-by-modification: Sort by last modification\nSort-by-priority: Sort all by priority\nSort-by-title: Sort all by title\nsorted-by-deadline: sorted by deadline\nsorted-by-modification: sorted by last modification\nsorted-by-priority: sorted by priority\nsorted-by-title: sorted by title\nSwitch-to-edit-mode: Switch to edit mode\nSwitch-to-safe-mode: Switch to save mode\nTake-it-up: Take it up!\nThis-is-done: This is done\nThis-week: This week\ntoday: today\nToday: Today\nToDo: ToDo\nToDo-template-title: ToDo Item\nToDo-template-text: Motivation: Description * Tests/Acceptance criteria\nTomorrow: Tomorrow\nUuups: Uuups!\n<!-- comments: comments -->\n<!-- translation requires: $:/plugins/telmiger/lib/telang  -->\n<!-- use translated term: <<telang term>> -->",
            "type": "application/x-tiddler-dictionary",
            "todo-done": "20160821121501",
            "title": "$:/plugins/telmiger/lib/languages/en-GB",
            "tags": "Translation ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170713195435035"
        },
        "$:/plugins/telmiger/lib/telang": {
            "text": "\\define telang(term)\n<$transclude tiddler={{$:/plugins/telmiger/lib/language}} index=\"$term$\"><$transclude tiddler=\"$:/plugins/telmiger/lib/languages/en-GB\" index=\"$term$\"/></$transclude>\n\\end\n",
            "created": "20160917153627850",
            "creator": "Thomas Elmiger",
            "modified": "20160917160018287",
            "modifier": "Thomas Elmiger",
            "priority": "2",
            "tags": "ToDoDone ToDoComponents $:/tags/Macro",
            "title": "$:/plugins/telmiger/lib/telang",
            "todo-deadline": "",
            "todo-done": "20160820234641 20160821004547"
        },
        "$:/plugins/telmiger/lib/telements/buttons": {
            "created": "20160816192735231",
            "creator": "Thomas Elmiger",
            "text": "\\define teBtnDelete1(tiddler:\"<<currentTiddler>>\",btntext:\"{{$:/core/images/delete-button}}\",tooltip:\"delete\",tip:\"really?\",class:\"\")\n<$vars tid=$tiddler$ btnclass=\"te-btn-action $class$\">\n<$button popup=\"$:/DeletePopupState\" class=<<btnclass>> tooltip=\"\"\"$tooltip$\"\"\">$btntext$</$button>\n<$reveal type=\"popup\" position=\"left\" state=\"$:/DeletePopupState\" class=\"te-popup-dark\">\n<$button class=\"te-delete $class$\" tooltip=\"$tip$\">\n<$action-deletetiddler $tiddler=<<tid>>/>\n<$action-deletetiddler $tiddler=\"$:/DeletePopupState\"/>\nConfirm deletion\n</$button> \n<$button class=\"te-secondary-btn $class$\">\n<$action-deletetiddler $tiddler=\"$:/DeletePopupState\"/>\nCancel\n</$button>\n</$reveal>\n</$vars>\n\\end\n\n\\define teBtnDelete(class:\"\")\n<$vars btnclass=\"te-btn-action te-btn-delete $class$\">\n<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<btnclass>>>\n{{$:/core/images/delete-button}}\n</$button>\n</$vars>\n\\end\n\n\\define teBtnHint(btntext,message,tooltip,tip,class:\"\")\n<$set name=\"btnclass\" value=\"te-hint $class$\">\n<$button class=<<btnclass>> tooltip=\"\"\"$tooltip$\"\"\" message=\"$message$\">\n$btntext$\n<span class=\"te-tip\">$tip$</span>\n</$button>\n</$set>\n\\end\n\n\\define teBtnTagListops(btntext,add-remove,tooltip,tip:\"_false_\",class:\"\")\n<$vars tip=\"\"\"$tip$\"\"\" btnclass=\"te-btn-action te-tag-listops $class$\">\n<$set name=\"mytip\" filter=\"[<tip>removeprefix[_false_]]\" emptyValue=\"\"\"<span class=\"te-tip\">$tip$</span>\"\"\">\n<$button class=<<btnclass>> tooltip=\"\"\"$tooltip$\"\"\">\n<$wikify name=\"timestampState\" text=\"{{$:/config/TimestampDisable}}\">\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$action-listops $tags=\"$add-remove$\" />\n$btntext$\n<<mytip>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=<<timestampState>>/>\n</$wikify>\n</$button>\n</$set>\n</$vars>\n\\end\n\n\\define teBtnEdit(sendmessage:\"tm-edit-tiddler\",class:\"\")\n<$wikify name=\"tt\" text=<<telang Edit>>>\n   <$button tooltip=<<tt>> class=\"te-btn-action te-edit $class$\">\n<$action-sendmessage $message=\"$sendmessage$\" $param=<<currentTiddler>> />\n{{$:/core/images/edit-button}}\n</$button>\n</$wikify>\n\\end\n\n\\define teBtnEditShowModified(sendmessage:\"tm-edit-tiddler\",class:\"\")\n<$wikify name=\"tt\" text=<<telang Edit>>>\n   <$button tooltip=<<tt>> class=\"te-btn-action te-edit $class$\">\n<$action-sendmessage $message=\"$sendmessage$\" $param=<<currentTiddler>> />\n{{$:/core/images/edit-button}}<span class=\"te-tip\"><$view tiddler=<<currentTiddler>> field=\"modified\" format=\"date\" template=\"YYYY-0MM-0DD 0hh:0mm\"/></span>\n</$button>\n</$wikify>\n\\end\n\n\\define teBtnPrio(btntext,priority,prioritylist:\"$:/plugins/telmiger/lib/telements/buttons\",tooltip,class:\"\")\n<$set name=\"nextprio\" filter=\"\"\"[list[$prioritylist$]nth[$priority$]]\"\"\">\n<$wikify name=\"next\" text=\"$tooltip$ <<nextprio>>\">\n<$button tooltip=<<next>> class=\"te-btn-action te-prio prio$priority$ $class$\">\n<$action-listops $field=\"priority\" $filter=<<nextprio>>/>\n$btntext$<span class=\"te-prionr\">$priority$</span>\n</$button>\n</$wikify>\n</$set>\n\\end\n\n\\define teBtnPrioPopup(tiddler,btntext,priority,prioritylist:\"$:/plugins/telmiger/lib/telements/buttons\",tooltip:\"change priority\",class:\"\")\n<$set name=\"qualstate\" value=<<qualify \"$:/state/reveal_priopop_$tiddler$_\">> >\n<$reveal type=\"nomatch\" state=<<qualstate>> text=\"show\" class=\"te-btn-reveal\">\n<$button tooltip=\"\"\"$tooltip$\"\"\" set=<<qualstate>> setTo=\"show\" class=\"te-btn-action te-prio prio$priority$ $class$\">\n$btntext$<span class=\"te-prionr\">$priority$</span>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<qualstate>> text=\"show\" class=\"te-btn-reveal\">\n<$button tooltip=\"close popup\" class=\"te-btn-action te-prio prio$priority$ $class$\">\n<$action-deletetiddler $tiddler=<<qualstate>>/>\n$btntext$<span class=\"te-prionr\">$priority$</span>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<qualstate>> text=\"show\">\n<$wikify name=\"tt\" text=\"set prio\">\n  <$macrocall $name=\"tePrioList\" tiddler=\"\"\"$tiddler$\"\"\" icon=\"{{$:/core/images/star-filled}}\" priorityfield=\"priority\" prioritylist=\"\"\"$prioritylist$\"\"\" tooltip=<<tt>> class=\"\" state=<<qualstate>>/>\n</$wikify>\n</$reveal>\n</$set>\n\\end\n\n\\define tePrioList(tiddler,prioritylist:\"_false_\",priorityfield:\"_false_\",icon:\"{{$:/core/images/star-filled}}\",state)\n<$vars priotid=\"\"\"$prioritylist$\"\"\" tid=\"\"\"$tiddler$\"\"\">\n<$set name=\"prioOld\" filter=\"[<currentTiddler>get[$priorityfield$]]\">\n<div class=\"te-prio-popup\">\n<ul class=\"te-prio-list\">\n<$list filter=\"[list<priotid>sort[]] -[<prioOld>]\" variable=\"prio\" emptyValue=\"error: no priorities in list field of $tiddler$\">\n<li>\n    <$macrocall $name=\"teBtnPrioSet\" tiddler=<<tid>> priority=<<prio>> priorityfield=\"\"\"$priorityfield$\"\"\" tooltip=\"set as prio\" icon=\"\"\"$icon$\"\"\" class=\"\" state=\"\"\"$state$\"\"\"/>\n</li>\n</$list>\n</ul>\n</div>\n</$set>\n</$vars>\n\\end\n\n\\define teBtnPrioSet(tiddler,priority,priorityfield,tooltip,icon,class:\"\",state)\n<$vars prio=\"\"\"$priority$\"\"\" qualstate=\"\"\"$state$\"\"\">\n<$button tooltip=\"\"\"$tooltip$\"\"\" class=\"te-btn-action te-prio prio$priority$ $class$\">\n<$wikify name=\"timestampState\" text=\"{{$:/config/TimestampDisable}}\">\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$action-listops $tiddler=\"\"\"$tiddler$\"\"\" $field=$priorityfield$ $filter=<<prio>>/>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=<<timestampState>>/>\n<$action-deletetiddler $tiddler=<<qualstate>>/>\n$icon$<span class=\"te-prionr\"><<prio>></span>\n</$wikify>\n</$button>\n</$vars>\n\\end\n\n\\define teBtnIcons(label,icon,hovericon)\n<span class=\"te-btn-label\">\"\"\"$label$\"\"\"</span>\n<span class=\"te-btn-icon\"><$transclude tiddler=\"\"\"$icon$\"\"\"/></span>\n<span class=\"te-btn-hovericon\"><$transclude tiddler=\"\"\"$hovericon$\"\"\"/></span>\n\\end\n\n<!-- !! Macros to produce nice buttons\n\nOptimize: Rewire field \"priority\" to a variable $saveto$?\n\n* teBtnDelete\n** delete a given tiddler – show a confirmation request first\n** teBtnDelete1 is my first try to implement this without using existing core as a blueprint.\n* teBtnHint(btntext,message,tooltip,tip,class:\"\")\n** add a message\n* teBtnTagListops(btntext,add-remove,tooltip,tip,class:\"\")\n** add-remove: add and remove tags in one statement \"addthis -removethat\"\n** does not update the modification date as of TW 5.1.14\n* teBtnEdit(sendmessage:\"tm-edit-tiddler\",class:\"\") \n** tiddler is currentTiddler\n* teBtnEditShowModified(sendmessage:\"tm-edit-tiddler\",class:\"\") – used in  $:/plugins/telmiger/listreveal/readme \n** shows modified timestamp on hover\n** tiddler is currentTiddler\n* teBtnPrio(btntext,priority,prioritylist:\"$:/plugins/telmiger/lib/telements/buttons\",tooltip,class:\"\")\n** let the user cycle through a list of choices (priorities) from the //list// field of a tiddler  \n* teBtnPrioPopup(tiddler,btntext,priority,prioritylist:\"$:/plugins/telmiger/lib/telements/buttons\",tooltip:\"change priority\",class:\"\")\n** let the user select a priority from a list of choices saved in the //list// field of a tiddler  \n* tePrioList – a helper macro for teBtnPrioPopup\n* teBtnPrioSet – a helper macro for teBtnPrioPopup\n* teBtnIcons(label,icon,hovericon) – create a set of spans for buttons with icons\n\n-->\n",
            "title": "$:/plugins/telmiger/lib/telements/buttons",
            "tags": "ToDoComponents $:/tags/Macro MyMacros Listreveal",
            "prio": "",
            "modifier": "Thomas Elmiger",
            "modified": "20170713202614284",
            "list": "3 1 2"
        },
        "01 Listreveal List Setup": {
            "created": "20170222232934553",
            "creator": "Thomas Elmiger",
            "text": "Explanations for the code of $:/plugins/telmiger/listreveal/readme – you can clone the linked tiddler and adapt it step by step to create your own listreveal project. The filter statement is a good point to start:\n\n```\n<$set name=\"listfilter\" \n   value=\"\"\"[tag[Listreveal]!is[system]sort[title]]\"\"\">\n<ul class=\"te-list\">\n<$list filter=<<listfilter>>>\n```\nAlways use a variable called //listfilter// to create your list. The list-based tag manager (see [[03 Context Tagging]]) is depending on this convention.\n\nIt is recommended to use the CSS classes you see in this example – add your own to change the looks.\n\n```\n<$set name=\"tidTitle\" value={{!!title}}>\n   <li class=\"todo-item te-flex-item\">\n      <span class=\"te-flex-item te-flex-half-full\">\n         <span class=\"te-flex-item te-flex-content te-flex-left\">\n   <$link to={{!!title}}><$view field=\"title\"/></$link>\n         </span>\n      </span>\n```\nThe styling relies on [[CSS3 flexbox|https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties]]. These spans help to make your list as mobile friendly as possible.\n\n```\n      <span class=\"te-flex-item te-flex-half-full\">\n         <span class=\"te-flex-item te-flex-content te-flex-right\">\n            <<teBtnEditShowModified>>\n```\nThis macro produces an edit button. It shows the tiddler’s modified date when the mouse hovers over it.\n\n```\n<$wikify name=\"cl\" text=<<telang close>> >\n<$wikify name=\"tt\" text=<<telang Details>> >\n   <$macrocall $name=\"listrevealButton\" title=<<tidTitle>> tooltip=<<tt>> close=<<cl>>/>\n</$wikify>\n</$wikify>\n```\nThis macrocall produces the button on the right side that opens and closes the tiddlers.\n\nThe variables //cl// and //tt// get predefined translations from the language tiddlers that are part of this plugin. You can replace the tooltip for opening (attribute //tooltip//) and closing (attribute //close//) with your own texts.\n\n```\n         </span>\n      </span>\n<$wikify name=\"tpl\" text=<<telang date-created-tmpl>> >\n   <$macrocall $name=\"listrevealContent\" title=<<tidTitle>> datetime=<<tpl>>/>\n</$wikify>\n```\nThis macrocall produces the text content and some details of your tiddler.\n\nAgain the variable //tpl// gets a predefined translation from the integrated language tiddlers. It is used as a [[date format template|http://tiddlywiki.com/#DateFormat]] when the created and modified timestamps of the tiddler are displayed. This attribute is optional.\n\n//tidTitle// is the variable for the title of your list elements (your tiddlers). It is set at the beginning (see second snippet).\n\n```\n   </li>\n</$set>\n</$list>\n</ul>\n</$set>\n```\nThe whole list is presented as an unordered HTML list `<ul>` with tiddlers as list items `<li>`.",
            "title": "01 Listreveal List Setup",
            "tags": "Listreveal",
            "modified": "20170224201650800",
            "modifier": "Thomas Elmiger"
        },
        "02 Edit Button": {
            "created": "20170222233632994",
            "creator": "Thomas Elmiger",
            "text": "Optionally you can add a lock/unlock button to switch your list into edit mode (all listreveal lists in your wiki to be precise). This presents the tiddler content in an editor field where you can change it using wikitext formatting. \n\n```\nUse this button to enable editing: <<listrevealBtnEdit>>\n```\nAdd your own parameter `class:\"your-class\"` for styling and positioning via CSS. The icon has a so called dirty indicator implemented: it turns red if you have unsaved changes.",
            "title": "02 Edit Button",
            "tags": "Listreveal",
            "modified": "20170224192922331",
            "modifier": "Thomas Elmiger"
        },
        "03 Context Tagging": {
            "created": "20170224195102124",
            "creator": "Thomas Elmiger",
            "text": "When you look inside a tiddler in the list using the ellipsis (…) button on the right, you see the tiddler’s tags, text and timestamps. \n\n{{$:/core/images/tag-button}}\n\nThe tags can be changed using the tag label icon. A unique feature called context tagging or list-based tagging appears in a popup. From there you are able to add suggested tags based on the other tiddlers in your list or remove single tags from the tiddler. ",
            "title": "03 Context Tagging",
            "tags": "Listreveal",
            "modified": "20170224195644691",
            "modifier": "Thomas Elmiger"
        },
        "04 Checklists": {
            "created": "20170224200058192",
            "creator": "Thomas Elmiger",
            "text": "This plugin comes with CSS to support checklists generated via a plugin by Tony Grosinger – indentation and the display of user interface elements to add and delete items should be optimized for use inside of listreveal lists.\n\n[ ] Install the plugin from https://grosinger.net/tw5-checklist/\n[ ] Make your first checklist\n[x] Read these hints on checklists",
            "todo-done": "20160917214708",
            "todo-deadline": "20160912220000000",
            "title": "04 Checklists",
            "tags": "Listreveal Usability Plugins",
            "priority": "2",
            "modifier": "Thomas Elmiger",
            "modified": "20170224201034767"
        },
        "05 Translations": {
            "text": "The following language tiddlers are shipped with this plugin: \n\n<ul>\n<$list filter=\"\"\"[all[tiddlers+shadows]prefix[$:/plugins/telmiger/lib/languages/]sort[]]\"\"\">\n<li>\n{{##ID}}:  <$link to={{!!title}}><$view field=\"title\"/></$link>\n</li>\n</$list>\n</ul>\n\nSet your language in $:/plugins/telmiger/lib/language (I hope I will find a way to use the language from the TW settings in the future).\n\nTo implement a new language you could clone and adapt one of them. They are used for other plugins too, this is why they contain way more text than needed for listreveal.\n",
            "title": "05 Translations",
            "tags": "Listreveal Translation",
            "modifier": "Thomas Elmiger",
            "modified": "20170714214826478",
            "creator": "Thomas Elmiger",
            "created": "20170224202239839"
        },
        "$:/plugins/telmiger/lib/languages/de-DE": {
            "created": "20160823202222125",
            "creator": "Thomas Elmiger",
            "text": "ID:Deutsch (Deutschland)\ndate-created-tmpl: {{$:/language/Tiddler/DateFormat}}\ndate-created-tmpl-info: DD. MMM YYYY, 0hh:0mm Uhr\ndate-deadline-tmpl: 0DD.0MM.YYYY\n<!-- strings: strings start here -->\nAdd-tag: Tag hinzufügen\nAdd-tags-from-the-list: Tags aus der Liste hinzufügen\nall: alle\nall-projects: alle Projekte\narchive: archivieren\nAre-you-sure?: Bist du sicher?\nChange-deadline: Fälligkeit ändern\nchange-priority: Priorität ändern\nchange-priority-to: Priorität ändern auf\nClick-to-edit-title: Auf Titel klicken zum Bearbeiten!\nclose: Schließen\nClose: Schließe\ndays-back: Tage\nDetails: Details\nDo-it-again: Mach’s nochmal\nDo-now: Jetzt erledigen\nDone: Erledigt\nEdit: bearbeiten\nHide-list: Liste ausblenden\nlate: später\nManage-tags: Tag-Manager\nMove-down: Nach unten\nMove-up: Nach oben\nNew-ToDo-Item: Neue Aufgabe\nno.: Anz.\nNothing-to-do-?: Nichts zu tun? Erstelle eine Aufgabe mit diesem Knopf\nPick-a-task-: Wähle eine Aufgabe aus der Liste unten mit diesem Knopf\nPrint-window-hint: In neuem Fenster öffnen zum Drucken\nProject: Projekt:\nRecycle: Nochmals verwenden\nRelax-Nothing-to-do: Schön. Es gibt nichts zu tun.\nRemove-deadline: Fälligkeit löschen\nRemove-tags?: Tags entfernen?\nReset: Zurücksetzen\nsearch: Suche\nSend-it-down: doch nicht jetzt\nSet-deadline: Termin festlegen\nShow-list: Liste anzeigen\nSort-by-deadline: Nach Termin sortieren\nSort-by-modification: Nach letzter Änderung sortieren\nSort-by-priority: Alle nach Priorität sortieren\nSort-by-title: Alle nach Titel sortieren\nsorted-by-deadline: sortiert nach Enddatum\nsorted-by-modification: sortiert nach letzter Änderung\nsorted-by-priority: sortiert nach Priorität\nsorted-by-title: sortiert nach Titel\nSwitch-to-edit-mode: Bearbeiten ermöglichen\nSwitch-to-safe-mode: Bearbeiten ausschalten\nTake-it-up: Rauf damit!\nThis-is-done: Das ist erledigt\nThis-week: Diese Woche\ntoday: heute\nToday: Heute\nToDo: ToDo\nToDo-template-title: Neue Aufgabe\nToDo-template-text: Motivation: Beschreibung * Tests/Abnahmekriterien\nTomorrow: Morgen\nUuups: Hoppla!\n<!-- comments: Kommentare -->\n<!-- translation requires: $:/plugins/telmiger/lib/telang  -->\n<!-- use translated term: <<telang term>> -->",
            "type": "application/x-tiddler-dictionary",
            "todo-done": "20160821121525",
            "title": "$:/plugins/telmiger/lib/languages/de-DE",
            "tags": "Translation ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170713195705076"
        },
        "$:/plugins/telmiger/lib/languages/de-CH": {
            "created": "20160821100821036",
            "creator": "Thomas Elmiger",
            "text": "ID:Deutsch (Schweiz)\ndate-created-tmpl: {{$:/language/Tiddler/DateFormat}}\ndate-created-tmpl-info: DD. MMM YYYY, 0hh:0mm Uhr\ndate-deadline-tmpl: 0DD.0MM.YYYY\n<!-- strings: strings start here -->\nAdd-tag: Tag hinzufügen\nAdd-tags-from-the-list: Tags aus der Liste hinzufügen\nall-projects: alle Projekte\narchive: archivieren\nAre-you-sure?: Bist du sicher?\nChange-deadline: Fälligkeit ändern\nchange-priority: Priorität ändern\nchange-priority-to: Priorität ändern auf\nClick-to-edit-title: Auf Titel klicken zum Bearbeiten!\nclose: Schliessen\nClose: Schliesse\ndays-back: Tage zurück\nDetails: Details\nDo-it-again: Mach’s nochmal\nDo-now: Jetzt erledigen\nDone: Erledigt\nEdit: bearbeiten\nHide-list: Liste ausblenden\nlate: später\nManage-tags: Tag-Manager\nMove-down: Nach unten\nMove-up: Nach oben\nNew-ToDo-Item: Neue Aufgabe\nno.: Anz.\nNothing-to-do-?: Nichts zu tun? Erstelle eine Aufgabe mit diesem Knopf\nPick-a-task-: Wähle eine Aufgabe aus der Liste unten mit diesem Knopf\nPrint-window-hint: In neuem Fenster öffnen für Druck\nProject: Projekt:\nRecycle: Nochmals verwenden\nRelax-Nothing-to-do: Schön. Es gibt nichts zu tun.\nRemove-deadline: Fälligkeit löschen\nRemove-tags?: Tags entfernen?\nReset: Zurücksetzen\nsearch: Suche …\nSend-it-down: doch nicht jetzt\nSet-deadline: Termin festlegen\nShow-list: Liste anzeigen\nSort-by-deadline: Nach Termin sortieren\nSort-by-modification: Nach letzter Änderung sortieren\nSort-by-priority: Alle nach Priorität sortieren\nSort-by-title: Alle nach Titel sortieren\nsorted-by-deadline: sortiert nach Enddatum\nsorted-by-modification: sortiert nach letzter Änderung\nsorted-by-priority: sortiert nach Priorität\nsorted-by-title: sortiert nach Titel\nSwitch-to-edit-mode: Bearbeiten ermöglichen\nSwitch-to-safe-mode: Bearbeiten ausschalten\nTake-it-up: Rauf damit!\nThis-is-done: Das ist erledigt\ntoday: heute\nToday: Heute\nToDo: ToDo\nToDo-template-title: ToDo Item\nToDo-template-text: Motivation: Description * Tests/Acceptance criteria\nThis-week: Diese Woche\nTomorrow: Morgen\nUuups: Hoppla!\n<!-- comments: Kommentare -->\n<!-- translation requires: $:/plugins/telmiger/lib/telang  -->\n<!-- use translated term: <<telang term>> -->",
            "type": "application/x-tiddler-dictionary",
            "todo-done": "20160821121525",
            "title": "$:/plugins/telmiger/lib/languages/de-CH",
            "tags": "Translation ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170713195742337"
        },
        "$:/plugins/telmiger/listreveal/icon": {
            "created": "20170224201850969",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64.003\" height=\"64.003\" viewBox=\"-500.5 395.5 64.003 64.003\"><path d=\"M-468.5 396.5l26.426 15.5v31l-26.425 15.5-26.426-15.5v-31l26.427-15.5z\"/><path fill=\"#FFF\" d=\"M-485.996 419.088h34.99v16.824h-34.99z\"/><path fill=\"#E2001A\" d=\"M-468.5 405.5c-12.15 0-22 9.85-22 22s9.85 22 22 22 22-9.85 22-22-9.85-22-22-22zm13.11 21.637c-1.022.682-2.674 1.023-4.954 1.023h-2.838c-1.505 0-2.598.3-3.28.9-.68.6-1.22 1.804-1.622 3.615 0 0-.063.526-.178.526s-.13-.31-.184-.562c-.056-.263-.14-.59-.256-.977-.224-.758-.447-1.332-.67-1.72-.27-.482-.613-.87-1.024-1.165-.412-.294-.883-.47-1.413-.528l-.74-.088h-3.637c-2.178 0-3.796-.343-4.855-1.024-1.764-1.12-2.71-3.24-2.842-6.357-.01-.25 0-.48.047-.772h.208c.142 1.41 1.304 2.502 2.158 3.274.853.77 2.222 1.155 4.104 1.155h3.3c1.896 0 3.28.436 4.158 1.306.79.786 1.31 2.017 1.56 3.69.028.183.012.263.064.263.053 0 .04-.09.06-.278.253-2.173 1.094-3.627 2.522-4.363.88-.46 2.28-.676 4.196-.652l2.257.035c1.527.023 2.814-.278 3.86-.908 1.046-.63 2.285-1.803 2.425-3.52h.21c.065.17.057.56.045.828-.13 3.105-1.023 5.206-2.68 6.3z\"/></svg>",
            "type": "image/svg+xml",
            "title": "$:/plugins/telmiger/listreveal/icon",
            "tags": "",
            "modified": "20170224201914042"
        },
        "$:/plugins/telmiger/listreveal/readme": {
            "created": "20170222172249206",
            "creator": "Thomas Elmiger",
            "text": "!! Good to Know\n\nA list of things you should know about this plugin. Click the ellipsis button on the right […] to see more.\n\nUse this button to enable editing: <<listrevealBtnEdit>>\n\n---\n\n<$set name=\"listfilter\" value=\"\"\"[all[shadows]prefix[0]sort[title]]\"\"\">\n<ul class=\"te-list\">\n<$list filter=<<listfilter>>>\n<$set name=\"tidTitle\" value={{!!title}}>\n   <li class=\"todo-item te-flex-item\">\n      <span class=\"te-flex-item te-flex-half-full\">\n         <span class=\"te-flex-item te-flex-content te-flex-left\">\n   <$link to={{!!title}}><$view field=\"title\"/></$link>\n         </span>\n      </span>\n      <span class=\"te-flex-item te-flex-half-full\">\n         <span class=\"te-flex-item te-flex-content te-flex-right\">\n            <<teBtnEditShowModified>>\n<$wikify name=\"cl\" text=<<telang close>> >\n<$wikify name=\"tt\" text=<<telang Details>> >\n   <$macrocall $name=\"listrevealButton\" title=<<tidTitle>> tooltip=<<tt>> close=<<cl>>/>\n</$wikify>\n</$wikify>\n         </span>\n      </span>\n<$wikify name=\"tpl\" text=<<telang date-created-tmpl>> >\n   <$macrocall $name=\"listrevealContent\" title=<<tidTitle>> datetime=<<tpl>>/>\n</$wikify>\n   </li>\n</$set>\n</$list>\n</ul>\n</$set>",
            "title": "$:/plugins/telmiger/listreveal/readme",
            "tags": "Listreveal",
            "modified": "20170224210736677",
            "modifier": "Thomas Elmiger"
        },
        "$:/plugins/telmiger/listreveal/tags": {
            "text": "\\define lrTaglist(tiddler:\"_false_\")\n<div class=\"lr-tag-popup\">\n<<telang Add-tags-from-the-list>> \n<$wikify name=\"tt\" text=<<telang Add-tag>>>\n<ul class=\"lr-tags-add\">\n<$list filter=\"[list[$:/temp/lr-tags-$tiddler$!!lr-tagsinlist]sort[]] -[list[$:/temp/lr-tags-$tiddler$!!lr-tagstoremove]]\" variable=\"tag\">\n<li>\n   <$macrocall $name=\"teBtnTagAddRemove\" btntext=<<tag>> add=<<tag>> tiddler=\"\"\"$tiddler$\"\"\" tooltip=<<tt>>/> \n</li>\n</$list>\n</ul>\n</$wikify>\n<<telang Remove-tags?>> \n<$wikify name=\"tt\" text=<<telang Are-you-sure?>>>\n<ul class=\"lr-tags-remove\">\n<$list filter=\"[list[$:/temp/lr-tags-$tiddler$!!lr-tagstoremove]sort[]]\" variable=\"tag\">\n<li>\n   <$macrocall $name=\"teBtnTagAddRemove\" btntext=<<tag>> remove=<<tag>> tiddler=\"\"\"$tiddler$\"\"\" tooltip=<<tt>>/> \n</li>\n</$list>\n</ul>\n</$wikify>\n</div>\n\\end\n\n\\define teBtnTagAddRemove(btntext,add:\"_false_\",remove:\"_false_\",tooltip,class:\"\",tiddler:\"_false_\")\n<$vars tip=\"\"\"$tip$\"\"\" tiddler=\"\"\"$tiddler$\"\"\" btnclass=\"te-popup-action $class$\" add=\"\"\"$add$\"\"\" remove=\"\"\"$remove$\"\"\">\n<$set name=\"actiontid\" filter=\"[<tiddler>!prefix[_false_]]\" value=<<tiddler>> emptyValue=<<currentTiddler>>>\n<$set name=\"subfilter\" filter=\"[<add>!prefix[_false_]]\" value=\"[[$add$]]\" emptyValue=\"-[[$remove$]]\">\n<$wikify name=\"at\" text=<<actiontid>>>\n<$button class=<<btnclass>> tooltip=\"\"\"$tooltip$\"\"\">\n<$wikify name=\"timestampState\" text=\"{{$:/config/TimestampDisable}}\">\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$action-listops $tiddler=<<at>> $field=\"tags\" $subfilter=<<subfilter>>/>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=<<timestampState>>/>\n<$action-setfield $tiddler=\"\"\"$(popstate)$\"\"\" $field=\"text\" $value=\"\"/>\n   <$text text=\"\"\"$btntext$\"\"\">\n</$wikify>\n</$button>\n</$wikify>\n</$set>\n</$set>\n</$vars>\n\\end\n\n\\define lrBtnAddTags(tiddler,class:\"\")\n<$vars tiddler=\"\"\"$tiddler$\"\"\" temptags=\"$:/temp/lr-tags-$tiddler$\">\n<$wikify name=\"tt\" text=<<telang Manage-tags>>>\n<$wikify name=\"tagfilter\" text=\"<<listfilter>> +[tags[]sort[]]\">\n<$button popup=<<qualify \"$:/state/popup/lr-tags-$tiddler$\">> class=\"\"\"te-btn-action addtag $class$\"\"\" tooltip=<<tt>> >\n<$action-listops $tiddler=<<temptags>> $field=\"lr-tagsinlist\" $filter=<<tagfilter>>/>\n<$action-listops $tiddler=<<temptags>> $field=\"lr-tagstoremove\" $filter=\"[<tiddler>tags[]]\"/>\n<$action-setfield $tiddler=<<temptags>> text=<<lrTaglist \"\"\"$tiddler$\"\"\">>/>\n{{$:/core/images/tag-button}}\n</$button>\n</$wikify>\n</$wikify>\n\\end\n\n\\define lrTagsPopup(tiddler)\n<$set name=\"popstate\" value=<<qualify \"$:/state/popup/lr-tags-$tiddler$\">>>\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<popstate>> type=\"nomatch\" text=\"\" default=\"\">\n{{$:/temp/lr-tags-$tiddler$}}\n</$reveal>\n</$set>\n\\end\n\n\\define lrBtnTags(class:\"\")\n<span class=\"lr-flex-wrapper\">\n<$wikify name=\"tiddler\" text=<<currentTiddler>>>\n   <$macrocall $name=\"lrBtnAddTags\" tiddler=<<tiddler>> class=\"\"\"$class$\"\"\"/>\n   <$macrocall $name=\"lrTagsPopup\" tiddler=<<tiddler>>/>\n</$wikify>\n</span>\n\\end\n\n\\define listreveal-tags()\n<span class=\"listreveal-tags te-flex-item\">\n<<lrBtnTags muted>>\n<span class=\"te-tags\">\n<$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/>\n</span>\n</span>\n\\end\n\n<!-- !! Listreveal Tags\n\n* lrTaglist\n** show a popup where tags can be added or removed\n* teBtnTagAddRemove\n** show a button to add/remove a tag from a tiddler \n** does not update the modification date as of TW 5.1.14\n* lrBtnTags\n** lrBtnAddTags: show the button (and save the tags that could be added/removed)\n** lrTagsPopup: reveal or hide the popup\n* listreveal-tags\n** put this in your revealed section to show the button and the existing tags\n\n-->",
            "title": "$:/plugins/telmiger/listreveal/tags",
            "tags": "$:/tags/Macro MyMacros ToDoComponents Listreveal ToDoArchive",
            "modifier": "Thomas Elmiger",
            "modified": "20170503060202645",
            "datetime": "",
            "creator": "Thomas Elmiger",
            "created": "20160915193628399"
        },
        "$:/plugins/telmiger/lib/telements.css": {
            "created": "20160816210925818",
            "creator": "Thomas Elmiger",
            "text": "/* library of reusable (t)elements */\n\n/* header */\n\nheader {\n   background-color: <<colour notification-background>>;\n   padding: 10px;\n   margin: 0 0 0 -10px;\n}\n\n/* te-summary as seen in extract macro */\n\n.te-summary {\n   width: 100%;\n   background-color: <<colour code-background>>;\n}\n\n/* flexbox layout */\n\n.te-flex-item {\n   display: flex;\n   flex-direction: row;\n   flex-wrap: wrap;\n   justify-content: space-between;\n   align-items: flex-start;\n   height: auto;\n}\n\n.te-flex-half-full {\n   flex-grow: 1;\n   min-width: 49%;\n}\n\n.te-flex-left {\n   justify-content: flex-start;\n}\n\n.te-flex-right {\n   justify-content: flex-end;\n}\n\n.te-flex-content {\n   width: 100%;\n}\n\n/* lists */\n\n.te-list {\n   list-style: outside none none;\n   margin: 0 0 1em 0;\n   padding: 0;\n   line-height: 2;\n}\n\n.te-list .te-flex-item {\n   border-top: 1px solid rgba(1,1,1,0);\n   border-bottom: 1px solid rgba(1,1,1,0);\n   margin-bottom: -1px;\n}\n\n.te-list .te-flex-item a.tc-tiddlylink-resolves {\n    flex-grow: 3;\n}\n\n\n/* buttons */\n/* big buttons */\n\n.te-btn-big {\n   display: inline-block;\n   position: absolute;\n   right: 42px;\n   height: 29px;\n   min-width: 2.2em;\n   background: none;\n   background-color: <<colour sidebar-tab-background-selected>>;\n   border: 1px solid lightgray;\n   font-size: 0.85em;\n   line-height: 0.5;\n   margin-left: 10px;\n   padding: 3px 6px 1px;\n}\n.te-btn-big:hover {\n   background-color: <<colour sidebar-tab-background>>;\n}\n.te-btn-big.te-inline {\n    position: relative;\n    left: 0px;\n    vertical-align: bottom;\n}\n/* in tabs e.g. plugin info */\n.tc-tab-set .te-btn-big {\n   right: 62px;\n}\n\n/* standard save button */\n\nspan.te-btn-big button {\n   margin: -2px 0 0 5px;\n   padding: 0;\n   background: none;\n   border: none;\n}\nspan.te-btn-big button svg {\n   height: 0.9em;\n}\n\n/* color overlay hack */\n\nbutton.te-btn-big.te-create::before {\n   background-color: <<colour download-background>>;\n   content: \"\";\n   position: absolute;\n   top: 0; \n   left: 0;\n   width: 100%; \n   height: 100%;  \n   opacity: 0.33; \n}\nbutton:hover.te-btn-big.te-create::before {\n   opacity: 0.66; \n}\n\n.te-btn-big.unlocked {\n   background-color: <<colour sidebar-tab-background>>;\n}\n.te-btn-big.unlocked:hover {\n   background-color: <<colour sidebar-tab-background-selected>>;\n}\n.te-btn-big.te-create {\n   background-color: unset;\n}\n.te-btn-big .tc-image-locked-padlock, \n.te-btn-big .tc-image-unlocked-padlock {\n   margin-bottom: 3px;\n}\n.te-btn-big .tc-image-new-button {\n   margin-bottom: 2px;\n   margin-top: 1px;\n}\n.te-btn-big .tc-image-unfold, \n.te-btn-big .tc-image-fold {\n   margin-top: 3px;\n}\n\n\n/* action buttons */\n\n.te-btn-action {\n   background: none;\n   border: none;\n   margin: 0.3em 0.3em 0 0.6em;\n   padding: 0;\n}\n.te-btn-action svg {\n   fill: #333;\n}\n.te-list .te-btn-action.muted svg {\n   opacity:0.3;\n}\n.te-list .te-btn-action:hover svg {\n   opacity:0.6;\n}\n\n.te-btn-action.addtag svg {\n   height: 1.5em;\n   width: 1.5em;\n}\n\n.te-btn-action.te-edit svg {\n   height: 1.25em;\n   width: 1.25em;\n   margin-bottom: -2px;\n}\n\n.te-btn-action.te-prio {\n   background-color: #777;\n   width: 18px;\n   height: 18px;\n   margin-top: 3px;\n   border: 3px solid white;\n   box-sizing: content-box;\n   border-radius: 5px;\n}\n.te-btn-action.te-prio.prio2 {\n   background-color: #999;\n}\n.te-btn-action.te-prio.prio3 {\n   background-color: #bbb;\n}\n.te-btn-action.te-prio.prio4 {\n   background-color: #ddd;\n}\n\n/* action button in te-tip */\n\n.te-tip .te-btn-action {\n    margin-left: 0.4em;\n    padding-bottom: 25px;\n}\n\n\n/* delete button and delete popup */\n\n.te-btn-delete svg.tc-image-delete-button {\n   width: 1.1em;\n   height: 1.45em;\n}\n\n/* unused !!! */\n.te-delete {\n   background-color: #faa;\n}\n.te-popup-dark {\n   padding: 0.5em;\n   background-color: #999;\n   text-align: center;\n}\n\n\n/* popup action buttons */\n\n.te-popup-action {\n    background: none;\n    border: none;\n    padding: 0;\n}\n\n/* date picker button */\n\n.te-btn-action.todo-deadline {\n    display: inline-block;\n    margin-top: 2px;\n    text-align: center;\n    width: 24px;\n}\n\n.te-btn-action.todo-deadline:hover {\n   cursor: pointer;\n   fill: #000;\n}\n.te-btn-action.todo-deadline span svg {\n    height: 1.33em;\n    width: 1.33em;\n    margin-bottom: -3px;\n    opacity: 0.6;\n    display: inline-flex;\n    position: absolute;\n    margin-left: -0.5em;\n    margin-top: 3px;\n}\n\n/* label and icons */\n.te-btn-label {\n   font-size: 0;\n   height: 1px;\n   overflow: hidden;\n   display: block;\n}\n.te-btn-icon {\n   display: block;\n}\nbutton:hover .te-btn-icon {\n   display: none;\n}\n.te-btn-hovericon {\n   display: none;\n}\nbutton:hover .te-btn-hovericon {\n   display: block;\n}\n\n/* urgent indicators */\n\n.te-btn-action .urgent {\n    display: table-cell;\n    position: relative;\n    margin-left: 0;\n    left: 0em;\n    top: -10px;\n    font-size: 0.75em;\n    line-height: 1.25;\n    padding: 0 0.1em 0 0.1em;\n    max-width: 3.25em;\n}\n\n.urgent.late {\n   background-color: red;\n   color: white;\n}\n.urgent.today {\n   background-color: yellow;\n   color: red;\n}\n\n\n/* priority buttons */\n\n.te-btn-action.te-prio svg {\n   position: relative;\n   height: 1.65em;\n   width: 1.5em;\n   margin-top: -3px;\n   opacity: 0;\n   z-index: 101;\n}\n.te-btn-action.te-prio.prio1:hover svg {\n   opacity: 0.6;\n}\n.te-btn-action.te-prio.prio2:hover svg {\n   opacity: 0.5;\n}\n.te-btn-action.te-prio:hover svg {\n   opacity: 0.4;\n}\n.te-btn-action .te-prionr {\n   position: relative;\n   top: -1.5em;\n   width: 100%;\n   color: #fefefe;\n   font-size: 1em;\n   font-weight: 600;\n   text-align: center;\n}\n.te-btn-action.te-prio.prio1 .te-prionr, .te-btn-action.te-prio.prio2 .te-prionr,\n.te-btn-action.te-prio.prio3 .te-prionr {\n   color: #eee;\n}\n\n.te-prio-list {\n    list-style: none;\n    line-height: 1em;\n    padding: 1em 0 0 0;\n    margin: -1.5em 0 0 0;\n    background-color: <<colour sidebar-tab-background>>;\n    width: 43px;\n    position: absolute;\n    z-index: 25;\n    border: 1px solid <<colour sidebar-tab-border>>;\n    border-radius: 4px;\n}\n.te-list .te-prio-list {\n    margin: 1.75em 0 0 -2.5em;\n}\n\n.te-btn-reveal.tc-reveal {\n    height: 1em;\n}\n\n.te-linkbutton {\n   color: <<colour tiddler-link-foreground>>;\n   background-color: transparent;\n   border: 0;\n}\n\n\n/* big buttons positions */\n\n.te-first {\n   margin-right: 2px;\n}\n.te-second {\n   margin-right: 60px;\n}\n.te-third {\n   margin-right: 120px;\n}\n\n\n/* text */\n\n.te-text {\n   margin: 0 0.5em 0 0.5em;\n}\n.te-text.right {\n   margin-left: 1em;\n   margin-right: 0.5em;\n   right: 6em;\n}\n\n\n/* popup tip */\n\n.te-tip {\n   position: absolute;\n   display: none;\n   font-size: 15px;\n   line-height: 1.4;\n   white-space: nowrap;\n   padding: 0 3px 0 3px;\n   border: 1px solid <<colour notification-border>>;\n   border-radius: 3px;\n   background-color: <<colour notification-background>>;\n}\n\n.te-btn-big:hover .te-tip {\n   margin-left: -8em;\n   margin-top: -1.66em;\n   z-index: 100;\n   display: unset;\n}\n\n.te-btn-action:hover .te-tip,\n.te-created:hover .te-tip,\n.te-modified:hover .te-tip {\n   margin-left: -0.4em;\n   margin-top: -1.35em;\n   z-index: 100;\n   display: unset;\n}\n\n.te-text:hover .te-tip {\n   margin-left: -0.8em;\n   margin-top: -0.75em;\n   display: inline-flex;\n   z-index: 100;\n   display: inline-grid;\n   text-align: center;\n   line-height: 1.1;\n}\n\n.te-tip:hover span .te-tip, \n.te-text:hover .te-tip button .te-tip, \n.te-tip:hover button .te-tip {\n   display: none;\n}\n.te-tip:hover span:hover .te-tip, \n.te-tip:hover button:hover .te-tip  {\n   margin-top: -1.25em;\n   z-index: 101;\n   display: unset;\n}\n.te-tip span span svg {\n   margin-top: 0.25em;\n}\n\n/* meta info */\n\n.te-created, .te-modified {\n   position: relative;\n}\n\n/* images */\n\n.te-created svg, .te-modified svg {\n   max-height: 1.25em;\n   opacity: 0.6;\n   margin-bottom: -0.2em;\n}\n\n/* very small screens */\n\n@media (max-width: 500px) {\n   .te-btn-action {\n      margin: 0.3em 0.8em 0 0.5em;\n   }\n}",
            "title": "$:/plugins/telmiger/lib/telements.css",
            "tags": "$:/tags/Stylesheet Listreveal ToDoComponents ToDoArchive",
            "modifier": "Thomas Elmiger",
            "modified": "20170714223553671"
        },
        "$:/plugins/telmiger/lib/telements-print.css": {
            "text": "/* print optimisation for (t)elements */\n\n@media print {\n\n.te-noprint, \n.te-btn-action, .te-btn-action.muted, \n.te-btn-big, .te-btn-big.te-first, .te-btn-big.te-second, .te-btn-big.te-third,\n.te-edit, .te-to-top { \n   display: none;\n}\n\n/* header */\n\nheader {\n   background-color: transparent;\n}\n\n/* show buttons? reset display */\n/* big buttons */\n\n/* action buttons */\n\n.te-btn-action.todo-deadline, .te-btn-action.te-prio {\n   display: initial;\n}\n\n.te-btn-action.te-prio.prio1 span.te-prionr, \n.te-btn-action.te-prio.prio1 {\n   color: #efefef;\n}\n\n.te-btn-action.te-prio span.te-prionr, .te-btn-action.te-prio.prio2 span.te-prionr, \n.te-btn-action.te-prio.prio3 span.te-prionr, .te-btn-action.te-prio.prio4 span.te-prionr {\n   color: #ddd;\n}\n\n.te-btn-action.te-prio {\n   background-color: #ddd;\n   border: 3px solid black;\n}\n.te-btn-action.te-prio.prio2 {\n   background-color: #bbb;\n}\n.te-btn-action.te-prio.prio3 {\n   background-color: #999;\n}\n.te-btn-action.te-prio.prio4 {\n   background-color: #777;\n}\n\n/* date picker button */\n\n.te-btn-action.deadline span svg {\n   opacity: 0.66;\n}\n\n/* text */\n\n/* meta info */\n\n/* images */\n\n.te-created svg, .te-modified svg {\n   opacity: 0.6;\n}\n\n\n/* **** END of print optimisation **** */\n}\n",
            "title": "$:/plugins/telmiger/lib/telements-print.css",
            "tags": "$:/tags/Stylesheet Listreveal ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170711223138932",
            "creator": "Thomas Elmiger",
            "created": "20170201215840974"
        },
        "$:/plugins/telmiger/listreveal/lr": {
            "created": "20160811053433681",
            "creator": "Thomas Elmiger",
            "text": "\\define listrevealButton(title,tooltip:\"Details\",close:\"Close\",class:\"\")\n<$vars showclass=\"\"\"listreveal-btn-show te-noprint $class$\"\"\" hideclass=\"\"\"listreveal-btn-hide te-noprint $class$\"\"\">\n<$set name=\"qualstate\" value=<<qualify \"$:/state/listreveal_$title$_\">> >\n<$reveal type=\"nomatch\" state=<<qualstate>> text=\"visible\" animate=\"yes\" class=\"listreveal\">\n   <$button set=<<qualstate>> setTo=\"visible\" class=<<showclass>> tooltip=\"$tooltip$\">…</$button></$reveal>\n<$reveal type=\"match\" state=<<qualstate>> text=\"visible\" animate=\"yes\" class=\"listreveal\">\n   <$button class=<<hideclass>> tooltip=\"$close$\">&times;<$action-deletetiddler $tiddler=<<qualstate>> />\n   </$button></$reveal>\n</$set>\n</$vars>\n\\end\n\n\\define listrevealContent(title,mode:\"block\",datetime:\"YYYY-MM-DD\",state:\"_false_\")\n<$vars state=\"\"\"$state$\"\"\">\n<$set name=\"qualstate\" filter=\"[<state>!prefix[_false_]]\" value=<<state>> emptyValue=<<qualify \"$:/state/listreveal_$title$_\">> >\n<$reveal type=\"match\" state=<<qualstate>> text=\"visible\" animate=\"yes\" class=\"listreveal-open\">\n<<listreveal-tags>>\n<span class=\"listreveal-content\">\n<$reveal type=\"nomatch\" state=\"$:/state/listreveal-mode\" text=\"edit\">\n   <$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\"/>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/state/listreveal-mode\" text=\"edit\">\n   <$edit tiddler=\"\"\"$title$\"\"\" class=\"listreveal-edit-text\"/>\n</$reveal>\n</span>\n   <$macrocall $name=\"listreveal-meta\" tiddler=\"\"\"$title$\"\"\" datetime=\"\"\"$datetime$\"\"\"/>\n</$reveal>\n</$set>\n</$vars>\n\\end\n\n\\define listreveal-meta(tiddler,datetime)\n<span class=\"listreveal-meta te-flex-item\">\n   <span class=\"te-created\">{{$:/core/images/file}}<span class=\"te-tip\"><$view tiddler=\"\"\"$tiddler$\"\"\" field=\"creator\"/></span><$view tiddler=\"\"\"$tiddler$\"\"\" field=\"created\" format=\"date\" template=\"\"\"$datetime$\"\"\"/></span>\n   <span class=\"te-separator\"></span>\n<<listreveal-showmodified \"\"\"$tiddler$\"\"\" \"\"\"$datetime$\"\"\">>\n\\end\n\n\\define listreveal-showmodified(tiddler,datetime)\n<span class=\"te-modified\">{{$:/core/images/edit-button}}<span class=\"te-tip\"><$view tiddler=\"\"\"$tiddler$\"\"\" field=\"modifier\"/></span><$view tiddler=\"\"\"$tiddler$\"\"\" field=\"modified\" format=\"date\" template=\"\"\"$datetime$\"\"\"/></span>\n\\end\n\n\\define listrevealBtnEdit(class:\"\")\n<$reveal type=\"nomatch\" state=\"$:/state/listreveal-mode\" text=\"edit\">\n<$wikify name=\"tt\" text=<<telang Switch-to-edit-mode>>>\n<$button set=\"$:/state/listreveal-mode\" setTo=\"edit\" tooltip=<<tt>> class=\"te-btn-big locked $class$\">{{$:/core/images/locked-padlock}}</$button>\n</$wikify>\n</$reveal><$reveal type=\"match\" state=\"$:/state/listreveal-mode\" text=\"edit\">\n<$wikify name=\"tt\" text=<<telang Switch-to-safe-mode>>>\n<$button set=\"$:/state/listreveal-mode\" setTo=\"locked\" tooltip=<<tt>> class=\"te-btn-big unlocked $class$\"><$action-sendmessage $message=\"tm-auto-save-wiki\"/><span class=\"tc-dirty-indicator\">{{$:/core/images/unlocked-padlock}}</span></$button>\n</$wikify>\n</$reveal>\n\\end\n\n<!-- !! Listreveal Plugin Macros\n\n!!! Macros to reveal listed tiddlers\n* listrevealButton(title,tooltip:\"Details\",close:\"Close\",class:\"\")\n** produce a button to show/hide tiddler content\n*** parameters: tooltips for show/hide actions and a CSS-class\n*  listrevealContent(title,mode:\"block\",datetime:\"YYYY-MM-DD\",state:\"_false_\")\n** show the content of a listed tiddler\n** use the state parameter if you don’t want tu use the standard button\n*** set the state to //visible// to show tiddler content \n\n!!! Optional macro\n* listrevealBtnEdit(class:\"\")\n** produce a button to \n*** put all listed tiddlers in edit mode (wikitext editor)\n*** lock the tiddlers and auto-save the wiki after editing\n\n!!! Helper macros for listrevealContent\n* listreveal-meta(tiddler,datetime)\n** show meta information of a tiddler: dates for created/modified and creator/modifier (on hover)\n*** datetime: a [[date format|http://tiddlywiki.com/#DateFormat]] string \n* listreveal-showmodified(tiddler,datetime)\n** show modified timestamp and modifier name (on hover)\n*** datetime: a [[date format|http://tiddlywiki.com/#DateFormat]] string \n\n-->",
            "title": "$:/plugins/telmiger/listreveal/lr",
            "tags": "$:/tags/Macro Listreveal",
            "modifier": "Thomas Elmiger",
            "modified": "20170227172955605",
            "datetime": ""
        },
        "$:/plugins/telmiger/listreveal/lr.css": {
            "text": "/* listreveal styles */\n/* === optimised for: ul class=\"te-list\" and li class=\"te-flex-item\" === */\n\n\n/* buttons */\n\n.listreveal-btn-show, .listreveal-btn-hide {\n   margin: 0.2em 2px 0 0.5em;\n   color: <<colour sidebar-tab-foreground-selected>>;\n   width: 2.65em;\n   height: 1.8em;\n   border: none;\n}\n.listreveal-btn-show {\n   background-color: <<colour sidebar-tab-background-selected>>;\n   height: 1.6em;\n   width: 2.35em;\n   margin-left: 0.8em;\n}\n\n.listreveal-btn-hide, .listreveal-btn-show:hover {\n   background-color: <<colour sidebar-tab-background>>;\n}\n\n/* tiddler content */\n\n.listreveal-open {\n   height: auto; \n   width: 100%;\n   transition: none 0s ease 0s ;\n}\n\n.listreveal-content {\n   display: block;\n   color: <<colour foreground>>;\n   background-color: <<colour sidebar-tab-background-selected>>;\n   border-top: solid 1px <<colour sidebar-tab-border>>;\n   border-bottom: solid 1px <<colour sidebar-tab-border>>;\n   line-height: 1.5;\n   padding: 0.5em 1em 1em 1em;\n  -webkit-animation: expanditem 1s ease-in-out 0s running;\n  animation-name: expanditem;\n  animation-duration: 1s;\n  animation-timing-function: ease-in-out;\n  animation-delay: 0s;\n  animation-iteration-count: 1;\n  animation-direction: normal;\n}\n\n.listreveal-content pre {\n   background-color: <<colour tiddler-info-background>>;\n}\n\n/* edit mode */\n\n.listreveal-edit-text {\n  width: 100%;\n  border: 1px solid gray;\n  padding: 1em;\n}\n\n/* meta info */\n\n.listreveal-meta.te-flex-item, .listreveal-tags.te-flex-item {\n   color: <<colour sidebar-tab-foreground>>;\n   background-color: <<colour sidebar-tab-background>>;\n   border-bottom: 1px solid <<colour sidebar-tab-border>>;\n   border-top: 1px solid <<colour sidebar-tab-border>>;\n   margin-top: -1px;\n   margin-bottom: -1px;\n   font-size: 0.85em;\n}\n\n.listreveal-meta {\n   padding-right: 0.5em;\n}\n\n/* tags info */\n\n.listreveal-tags .te-tags button.tc-tag-label {\n   background-color: <<colour sidebar-tab-background-selected>>;\n}\n\n.lr-tag-popup {\n   margin-left: 1em;\n}\n.lr-tag-popup ul {\n   margin: 0;\n   padding: 0 1em 1em 0;\n   line-height: 1.75;\n   list-style: none;\n   font-weight: 600;\n}\n.lr-tag-popup ul li:hover{\n   color: <<colour tiddler-link-foreground>>;\n}\n.lr-tag-popup ul.lr-tags-remove li:hover{\n   color: <<colour dirty-indicator>>;\n}\n.lr-tags-add li button::before {\n   content: \"+&#8197;\";\n   font-size: 1.2em;\n   color: <<colour tiddler-link-foreground>>;\n}\n.lr-tags-remove li button::before {\n   content: \"&#215;&#8197; \";\n   font-size: 1.2em;\n   color: <<colour dirty-indicator>>;\n}\n\n@media (max-width: 960px) {\n}\n\n/* listreveal animation */\n\n@keyframes expanditem {\n  0% { \n      height: 0;\n      opacity: 0;\n  }\n  80.0% {\n      height: 60%;\n      opacity: 0.9;\n  }\n  100.0% {\n      height: 100%;\n      opacity: 1;\n  }\n}\n\n@-webkit-keyframes expanditem {\n  0% { \n      height: 0;\n      opacity: 0;\n  }\n  100.0% {\n      height: 100%;\n      opacity: 1;\n  }\n}",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/plugins/telmiger/listreveal/lr.css",
            "tags": "$:/tags/Stylesheet Listreveal ToDoComponents ToDoArchive",
            "modifier": "Thomas Elmiger",
            "modified": "20170628212920503",
            "creator": "Thomas Elmiger",
            "created": "20160816052415397"
        },
        "$:/plugins/telmiger/lib/icons/stopwatch-empty.svg": {
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\" class=\"te-stopwatch-button tc-image-button\">\n<path d=\"M64.075 11.522c-32.17 0-58.25 26.082-58.25 58.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S96.25 11.52 64.076 11.52zm0 100.5c-23.336 0-42.25-18.914-42.25-42.25 0-23.33 18.914-42.25 42.25-42.25 23.337 0 42.25 18.92 42.25 42.25 0 23.336-18.913 42.25-42.25 42.25zM55.53 10.022c-2.763 0-5-2.24-5.002-5-.003-2.756 2.24-5 5-5h16.988c2.76 0 5 2.24 5 5 .005 2.757-2.24 5-5 5H55.53z\"/>\n<path fill=\"#000\" d=\"M55 60h18v18H55z\"/>\n</svg>",
            "title": "$:/plugins/telmiger/lib/icons/stopwatch-empty.svg",
            "tags": "$:/tags/Image",
            "modifier": "Thomas Elmiger",
            "modified": "20170509160632118",
            "creator": "Thomas Elmiger",
            "created": "20170506112920842"
        },
        "$:/plugins/telmiger/lib/icons/stopwatch-stop.svg": {
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"5 0 128 128\" width=\"22pt\" height=\"22pt\" class=\"te-stopwatch-button tc-image-button\">\n<path d=\"M64.075 11.522c-32.17 0-58.25 26.082-58.25 58.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S96.25 11.52 64.076 11.52zm0 100.5c-23.336 0-42.25-18.914-42.25-42.25 0-23.33 18.914-42.25 42.25-42.25 23.337 0 42.25 18.92 42.25 42.25 0 23.336-18.913 42.25-42.25 42.25zM55.53 10.022c-2.763 0-5-2.24-5.002-5-.003-2.756 2.24-5 5-5h16.988c2.76 0 5 2.24 5 5 .005 2.757-2.24 5-5 5H55.53z\"/>\n<path d=\"M64.075 35.902c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998z\"/>\n<path fill=\"#FFF\" d=\"M49 54h30v30H49z\"/>\n</svg>",
            "title": "$:/plugins/telmiger/lib/icons/stopwatch-stop.svg",
            "tags": "$:/tags/Image",
            "modifier": "Thomas Elmiger",
            "modified": "20170509161709012",
            "creator": "Thomas Elmiger",
            "created": "20170507053913584"
        },
        "$:/plugins/telmiger/lib/icons/stopwatch.svg": {
            "text": "<svg class=\"te-stopwatch-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178c-2.116 1.775-5.27 1.498-7.045-.613-1.772-2.11-1.498-5.27.616-7.047l9.95-8.348c2.115-1.774 5.27-1.5 7.045.618 1.775 2.108 1.498 5.27-.616 7.043l-9.95 8.348zM102.983 27.178c2.116 1.775 5.27 1.498 7.045-.613 1.772-2.11 1.498-5.27-.616-7.047l-9.95-8.348c-2.114-1.774-5.27-1.5-7.044.618-1.775 2.108-1.498 5.27.616 7.043l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/>\n    </g>\n</svg>\n",
            "title": "$:/plugins/telmiger/lib/icons/stopwatch.svg",
            "tags": "$:/tags/Image",
            "modifier": "Thomas Elmiger",
            "modified": "20170509160445448",
            "creator": "Thomas Elmiger",
            "created": "20170509160027462"
        },
        "$:/plugins/telmiger/lib/entities": {
            "text": "\\define ldsbra() [[\n\\define rdsbra() ]]\n\n<!-- !! Entities as Macro Definitions\n\n!!! Very short macros for use in other macros\n* ldsbra and rdsbra – left double square brackets and right //dsbra//\n\n-->",
            "todo-done": "20160819011650",
            "title": "$:/plugins/telmiger/lib/entities",
            "tags": "$:/tags/Macro ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170702091256635",
            "creator": "Thomas Elmiger",
            "created": "20170629183744936"
        },
        "$:/plugins/telmiger/lib/languages/da-DK": {
            "text": "ID:Dansk\ndate-created-tmpl: {{$:/language/Tiddler/DateFormat}}\ndate-created-tmpl: DD. MMM YYYY, kl. 0hh:0mm\ndate-deadline-tmpl: 0DD.0MM.YYYY\n<!-- strings: strigs start here -->\nAdd-tag: Tilføj tag\nAdd-tags-from-the-list: Tilføj tags fra listen\nall: alle\nall-projects: alle projekter\narchive: arkiv\nAre-you-sure?: Er du sikker?\nChange-deadline: Ændre slutdato\nchange-priority: Ændre prioritet\nchange-priority-to: sæt prioritet til\nClick-to-edit-title: Klik på titlen for at redigere!\nclose: luk\nClose: Luk\ndays-back: dage tilbage\nDetails: Vis detaljer\nDo-it-again: Gør det igen\nDo-now: Udfør nu\nDone: Udført\nEdit: Redigér\nHide-list: Skjul liste\nlate: senere\nManage-tags: Tag-Manager\nMove-down: Flyt ned\nMove-up: Flyt op\nNew-ToDo-Item: Ny opgave\nno.: nr.\nNothing-to-do-?: Intet at lave? Beskriv en ny opgave med denne knap\nPick-a-task-: Vælg en opgave fra listen nedenunder med denne knap\nPrint-window-hint: Åbn i nyt vindue for at printe ud\nProject: Projekt\nRecycle: Genbrug\nRelax-Nothing-to-do: Slap af. Der er ikke noget at lave.\nRemove-deadline: Fjern slutdato\nRemove-tags?: Fjern tags?\nReset: Reset\nsearch: søg …\nSend-it-down: ikke endnu\nSet-deadline: Sæt slutdato\nShow-list: Vis liste\nSort-by-deadline: Sortér efter slutdato\nSort-by-modification: Sortér efter sidste ændring\nSort-by-priority: Sortér alle efter prioritet\nSort-by-title: Sortér alle efter titel\nsorted-by-deadline: sorteret efter slutdato\nsorted-by-modification: sorteret efter sidste ændring\nsorted-by-priority: sorteret efter prioritet\nsorted-by-title: sorteret efter titel\nSwitch-to-edit-mode: Slå redigering til\nSwitch-to-safe-mode: Slå redigering fra\nTake-it-up: Tag det op!\nThis-is-done: Dette er udført\nThis-week: I&nbsp;denne uge\ntoday: i&nbsp;dag\nToday: I&nbsp;dag\nToDo: ToDo\nToDo-template-title: Ny opgave\nToDo-template-text: Motivation: Beskrivelse * Tests/Accept kriterier\nTomorrow: I&nbsp;morgen\nUuups: Uuups!\n<!-- comments: Kommentarer -->\n<!-- credits: Tusind tak til Birthe for den oprindelige oversættelse! -->\n<!-- translation requires: $:/plugins/telmiger/lib/telang  -->\n<!-- use translated term: <<telang term>> -->\n",
            "type": "application/x-tiddler-dictionary",
            "todo-done": "20160821121501",
            "title": "$:/plugins/telmiger/lib/languages/da-DK",
            "tags": "ToDoComponents Translation",
            "modifier": "Thomas Elmiger",
            "modified": "20170714214949515",
            "creator": "BC",
            "created": "20170530162200369"
        },
        "$:/plugins/telmiger/lib/dates": {
            "created": "20170627092117795",
            "creator": "Thomas Elmiger",
            "text": "\\define yearsSince(date-field:\"modified\",tiddler)\n<<yearsDiff \"\"\"$date-field$\"\"\" \"\"\"$tiddler$\"\"\">>\n\\end\n\n\\define monthsSince(date-field:\"modified\",tiddler)\n<$wikify name=\"years\" text='<<yearsDiff $date-field$ \"\"\"$tiddler$\"\"\">>'>\n<$wikify name=\"yearsM\" text='<$macrocall $name=\"rpn\" a=<<years>> b=12 operation=\"*\"/>'>\n<$wikify name=\"months\" text='<<monthsDiff $date-field$ \"\"\"$tiddler$\"\"\">>'>\n<$macrocall $name=\"rpn\" a=<<yearsM>> b=<<months>>/>\n</$wikify></$wikify></$wikify>\n\\end\n\n\\define daysSince(date-field:\"modified\",tiddler)\n<<daysDiff $date-field$ \"\"\"$tiddler$\"\"\">>\n\\end\n\n\\define hoursSince(date-field:\"modified\",tiddler)\n<$wikify name=\"days\" text='<<daysSince $date-field$ \"\"\"$tiddler$\"\"\">>'>\n<$wikify name=\"daysH\" text='<$macrocall $name=\"rpn\" a=<<days>> b=\"24\" operation=\"*\"/>'>\n<$wikify name=\"hours\" text='<<hoursDiff $date-field$ \"\"\"$tiddler$\"\"\">>'>\n<$macrocall $name=\"rpn\" a=<<daysH>> b=<<hours>>/>\n</$wikify></$wikify></$wikify>\n\\end\n\n\\define minutesSince(date-field:\"modified\",tiddler)\n<$wikify name=\"hours\" text='<<hoursSince $date-field$ \"\"\"$tiddler$\"\"\">>'><$wikify name=\"hoursM\" text='<$macrocall $name=\"rpn\" a=<<hours>> b=\"60\" operation=\"*\"/>'><$wikify name=\"minutes\" text='<<minutesDiff $date-field$ \"\"\"$tiddler$\"\"\">>'><$macrocall $name=\"rpn\" a=<<hoursM>> b=<<minutes>>/></$wikify></$wikify></$wikify>\n\\end\n\n\\define hoursMinutesSince(date-field:\"modified\",tiddler)\n<$wikify name=\"minutes\" text='<<minutesSince $date-field$ \"\"\"$tiddler$\"\"\">>'><$macrocall $name=\"rpn\" a=<<minutes>> b=60 operation=\"/\" precision=\"f\"/> h <$macrocall $name=\"rpn\" a=<<minutes>> b=60 operation=\"%\"/> m</$wikify>\n\\end\n\n\\define minutesTo(date-field:\"modified\",tiddler)\n<$wikify name=\"minutes\" text='<<minutesSince $date-field$ \"\"\"$tiddler$\"\"\">>'><$wikify name=\"result\" text='<$macrocall $name=\"rpn\" a=<<minutes>> b=\"-1\" operation=\"*\"/>'><<result>></$wikify></$wikify>\n\\end\n\n\\define hoursTo(date-field:\"modified\",tiddler)\n<$wikify name=\"hours\" text='<<hoursSince $date-field$ \"\"\"$tiddler$\"\"\">>'><$wikify name=\"result\" text='<$macrocall $name=\"rpn\" a=<<hours>> b=\"-1\" operation=\"*\"/>'><<result>></$wikify></$wikify>\n\\end\n\n\\define yearsDiff(date-field:\"modified\",tiddler)\n<$wikify name=\"a\" text='<<now YYYY>>'><$wikify name=\"b\" text='<$macrocall $name=\"yearValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify>\n\\end\n\n\\define monthsDiff(date-field:\"modified\",tiddler)\n<$wikify name=\"a\" text='<<now MM>>'><$wikify name=\"b\" text='<$macrocall $name=\"monthValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify>\n\\end\n\n\\define daysDiff(date-field:\"modified\",tiddler)\n<$wikify name=\"a\" text='<<now DD>>'><$wikify name=\"b\" text='<$macrocall $name=\"dayValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify>\n\\end\n\n\\define hoursDiff(date-field:\"modified\",tiddler)\n<$wikify name=\"a\" text='<<now 0hh>>'><$wikify name=\"b\" text='<$macrocall $name=\"hoursValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify>\n\\end\n\n\\define minutesDiff(date-field:\"modified\",tiddler)\n<$set name=\"update-everything-now\" value=<<now 0mm>>><$wikify name=\"a\" text=\"<<update-everything-now>>\"><$wikify name=\"b\" text='<$macrocall $name=\"minutesValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify></$set>\n\\end\n\n<!-- !! Calculations with dates\nTransform dates in TW [[Date Field Format|http://tiddlywiki.com/#Date%20Fields]]\n\nTODO: Jed Carty has better macros for similar things – build a new version based on these http://ooktech.com/jed/ExampleWikis/DateMacros/\n\nWe compare the date string in a given field with the result of the `<<now>>` macro combined with one of the selectors YYYY for years, MM for months, DD for Days, 0hh …, 0mm …, 0ss. Note the 0-prefix for values that could be zero! (They disappear and return nothing when this is missing).\n\nThis was developped for use with due dates. The macros are good enough to check if a deadline was missed or if it will be reached soon.\n\n* time since the given timestamp\n** yearsSince(date-field:\"modified\",tiddler) – tiddler defaults to current\n** monthsSince (counts also the year difference)\n** daysSince – does NOT take the month into account\n*** this would be complicated because of differing number of days in each month\n** hoursSince (counts also the days)\n*** this can result in errors when the days are in different monts\n*** we recommend to filter for days in the same month first\n** minutesSince (counts also the hours and days)\n** hoursMinutesSince – turn minutes from minutesSince back into hours and minutes \n* time to the given datestamp … – time since inverted (* -1)\n** minutesTo\n** hoursTo\n** missing: daysTo, monthsTo, yearsTo\n* Diff macros\n** yearsDiff(date-field:\"modified\",tiddler)\n** … and so on for months, days, hours, minutes\n\n\nSyntax: `<<yearsSince created>>`\n\nResult: <<yearsSince created>>\n\n-->\n",
            "title": "$:/plugins/telmiger/lib/dates",
            "tags": "[[ToDo Addons]] $:/tags/Macro",
            "modifier": "Thomas Elmiger",
            "modified": "20170714220748829"
        },
        "$:/plugins/telmiger/lib/dates-then": {
            "created": "20170705203414697",
            "creator": "Thomas Elmiger",
            "text": "\\define yearValue(field,tiddler) <<dateValue YYYY $field$ $tiddler$>>\n\\define monthValue(field,tiddler) <<dateValue MM $field$ $tiddler$>>\n\\define dayValue(field,tiddler) <<dateValue DD $field$ $tiddler$>>\n\\define hoursValue(field,tiddler) <<dateValue 0hh $field$ $tiddler$>>\n\\define minutesValue(field,tiddler) <<dateValue 0mm $field$ $tiddler$>>\n\\define secondsValue(field,tiddler) <<dateValue 0ss $field$ $tiddler$>>\n\n\\define dateValue(template:\"YYYY-0MM-0DD\",field:\"modified\",tiddler) \n<$set name=\"tid\" filter=\"[field:title[$tiddler$]]\" value=\"\"\"$tiddler$\"\"\" emptyValue=<<currentTiddler>>><$view tiddler=<<tid>> field=\"\"\"$field$\"\"\" format=\"date\" template=\"\"\"$template$\"\"\"/></$set>\n\\end\n\n\n<!-- !! Macros for Dates from fields\nOutput dates from fields in TW [[Date Field Format|http://tiddlywiki.com/#Date%20Fields]]\n\n* dateValue(template:\"YYYY-0MM-0DD\",field:\"modified\",tiddler) – return a value from a date string via  the view widget\n** field: where the date string is stored\n** tiddler: where the date string is stored, defaults to currentTiddler\n* yearValue(field,tiddler) – return the year\n** monthValue, dayValue, hoursValue, minutesValue, secondsValue – guess what ;–)\n\n-->\n\nSyntax: `<<hoursValue example-1>>`\n\nResult: <<hoursValue example-1>>\n\n",
            "title": "$:/plugins/telmiger/lib/dates-then",
            "tags": "[[ToDo Addons]] $:/tags/Macro",
            "modifier": "Thomas Elmiger",
            "modified": "20170714220234254",
            "example-1": "20001231230000000"
        }
    }
}
<!-- allowed values for sort-list: priority/deadline/title -->
sort-list: deadline
<!-- allowed values for sort-report: priority/modified -->
sort-report: priority
<!-- comments: Kommentare -->
<!-- usage: <$reveal type="match" state="$:/plugins/telmiger/todonow/settings##sort-list" text="priority"> -->
show-list-deadline: bottom
{
    "tiddlers": {
        "$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js": {
            "text": "/*\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\ntype: application/javascript\nmodule-type: wikirule\n\\*/\n\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"checkbox\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\n\t// Match on [ ], [x], and [X], to the end of the line\n\tthis.matchRegExp = /^\\[([ xX])\\] .*$/mg;\n};\n\n/*\nRetrieve the configuration state of the clear all button\n*/\n\nexports.shouldShowClearAll = function() {\n    var configWidgetTitle = \"$:/plugins/tgrosinger/tw5-checklist/Configuration\";\n    var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\n\n    var showClearAll = configWidgetFields[\"show-clearall\"] || \"true\";\n    return (showClearAll === \"true\");\n}\n\n/*\nCreate list items\n*/\n\nexports.parse = function() {\n    var listItems = [];\n    var listStartPos = this.parser.pos;\n    var match = this.match;\n\n    // Start the list with a \"New List Item\" placeholder\n    listItems.push({\n        type: \"element\",\n        tag: \"li\",\n        children: [\n            {\n                type: \"element\",\n                tag: \"span\",\n                attributes: {\n                    class: {type: \"string\", value: \"checklist-newitem-icon\"},\n                    for: {type: \"string\", value: \"checklist-new\"}\n                }\n            },\n            {\n                type: \"element\",\n                tag: \"input\",\n                attributes: {\n                    class: {type: \"string\", value: \"checklist-newitem\"},\n                    id: {type: \"string\", value: \"checklist-new\"},\n                    placeholder: {type: \"string\", value: \"New list item (WikiText)\"}\n                    // impossible? add an aria-label \"Write a new todo item\"\n                    // attribute aria-label seems to be missing in $:/core/modules/widgets/edit.js \n                }\n            },\n            // label for the input field\n            {\n                type: \"element\",\n                tag: \"label\",\n                attributes: {\n                    class: {type: \"string\", value: \"checklist-vh\"},\n                    for: {type: \"string\", value: \"checklist-new\"}\n                },\n                children: [\n                    {type: \"text\", text: \"Write a new item for the list.\"}\n                ]\n            },\n            // (pseudo) button to add the new item to the list\n            {\n                type: \"element\",\n                tag: \"button\",\n                attributes: {\n                    class: {type: \"string\", value: \"tc-btn-invisible tc-btn-mini checklist-add\"},\n                    title: {type: \"string\", value: \"add to list\"}\n                },\n                children: [\n                    {\n                        type: \"element\",\n                        tag: \"span\",\n                        attributes: {\n                            class: {type: \"string\", value: \"checklist-vh\"}\n                        },\n                        children: [\n                            {type: \"text\", text: \"add list item\"}\n                        ]\n                    }\n                ]\n            }\n            // end of button\n        ]\n    });\n\n    // Create items in a loop\n    do {\n        var startPos = this.parser.pos;\n        this.parser.pos = this.matchRegExp.lastIndex;\n        var parseResults = this.parser.wiki.parseText(\n                \"text/vnd.tiddlywiki\",\n                this.parser.source.substring(startPos + 4, this.parser.pos),\n                {parseAsInline: true});\n\n        // Use the listitem body as a label for the checkbox to get better accessibility\n        var itembody = {\n            type: \"element\",\n            tag: \"label\",\n            attributes: {\n                for: {type: \"string\", value: match.index}\n            },\n            children: parseResults.tree\n        };\n\n        var checkbox = {\n            type: \"element\",\n            tag: \"input\",\n            attributes: {\n                type: {type: \"string\", value: \"checkbox\"},\n                pos: {type: \"string\", value: match.index},\n                id: {type: \"string\", value: match.index}\n            }\n        };\n        if (match[1] === \"x\" || match[1] === \"X\") {\n            checkbox.attributes.checked = {type: \"boolean\", value: true};\n        }\n\n        // Make a button to delete the item\n        var removelabel = {\n            type: \"element\",\n            tag: \"span\",\n            attributes: {\n                class: {type: \"string\", value: \"checklist-vh\"}\n            },\n            children: [\n                {type: \"text\", text: \"delete list item\"}\n            ]\n        };\n\n        var removebutton = {\n            type: \"element\",\n            tag: \"button\",\n            attributes: {\n                class: {type: \"string\", value: \"tc-btn-invisible tc-btn-mini checklist-remove\"},\n                title: {type: \"string\", value: \"delete\"}\n            },\n            children: [\n                removelabel\n            ]\n        };\n\n        // add the item to the list\n        listItems.push({\n            type: \"element\",\n            tag: \"li\",\n            children: [\n                checkbox,\n                removebutton,\n                itembody\n            ]\n        });\n\n        match = this.matchRegExp.exec(this.parser.source);\n    } while (match != null && match.index == 1 + this.parser.pos);\n\n    if (this.shouldShowClearAll()) {\n        // show the clear-all button\n        var clearallbutton = {\n            type: \"element\",\n            tag: \"button\",\n            attributes: {\n                class: {type: \"string\", value: \"checklist-clearall\"}\n            },\n            children: [\n                {\n                    type: \"element\",\n                    tag: \"span\",\n                    attributes: {\n                        class: {type: \"string\", value: \"checklist-clearall-label\"}\n                    },\n                    children: [\n                        {type: \"text\", text: \"Clear all\"}\n                    ]\n                }\n            ]\n        };\n\n        listItems.push({\n            type: \"element\",\n            tag: \"li\",\n            children: [\n                clearallbutton\n            ]\n        });\n    }\n\n    return [{\n        type: \"checklist\",\n        attributes: {\n            listStartPos: {type: \"string\", value: listStartPos},\n            listStopPos:  {type: \"string\", value: this.parser.pos}\n        },\n        children: listItems\n    }];\n};\n\n})();\n",
            "title": "$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/plugins/tgrosinger/tw5-checklist/checklist.js": {
            "text": "/*\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checklist.js\ntype: application/javascript\nmodule-type: widget\n\\*/\n\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckListWidget = function(parseTreeNode,options) {\n    this.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckListWidget.prototype.render = function(parent,nextSibling) {\n    this.tiddlerTitle = this.getVariable(\"currentTiddler\");\n    this.startPos = parseInt(this.parseTreeNode.attributes.listStartPos.value);\n    this.stopPos = parseInt(this.parseTreeNode.attributes.listStopPos.value);\n\n    this.parentDomNode = parent;\n    this.nextSibling = nextSibling;\n    this.computeAttributes();\n    this.execute();\n};\n\n/*\nRetrieve the configuration state indicating if items should be re-arranged\n*/\nCheckListWidget.prototype.shouldMoveChecked = function() {\n    var configWidgetTitle = \"$:/plugins/tgrosinger/tw5-checklist/Configuration\";\n    var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\n\n    var moveChecked = configWidgetFields[\"move-checked\"] || \"true\";\n    return (moveChecked === \"true\");\n}\n\n/*\nCompute the internal state of the widget\n*/\nCheckListWidget.prototype.execute = function() {\n    var domNode = this.document.createElement(\"ul\");\n    domNode.className = \"checklist\";\n\n    this.makeChildWidgets();\n    this.renderChildren(domNode);\n\n    /* add event listeners */\n    $tw.utils.each(domNode.childNodes, function(childNode) {\n        if (childNode.childNodes[0].className === \"checklist-clearall\") {\n            // ClearAllChecks, do not use checkbox listener\n            $tw.utils.addEventListeners(childNode.childNodes[0],\n                    [{name: \"click\", handlerObject: this,\n                        handlerMethod: \"handleClearChecksEvent\"}]);\n        } else if (childNode.childNodes[1].className === \"checklist-newitem\") {\n            // NewListItem, do not use checkbox listener\n            $tw.utils.addEventListeners(childNode.childNodes[1], [\n                    {name: \"blur\", handlerObject: this, handlerMethod: \"handleBlurNewItemEvent\"},\n                    {name: \"keyup\", handlerObject: this, handlerMethod: \"handleBlurNewItemEvent\"}\n            ]);\n    // If this is a normal checklist item …\n        } else {\n            if (childNode.childNodes[0].checked) {\n                $tw.utils.addEventListeners(childNode,\n                        [{name: \"change\", handlerObject: this, handlerMethod: \"handleUncheckEvent\"}]);\n            } else {\n                $tw.utils.addEventListeners(childNode,\n                        [{name: \"change\", handlerObject: this, handlerMethod: \"handleCheckEvent\"}]);\n            }\n            $tw.utils.addEventListeners(childNode.childNodes[1], [\n                {name: \"click\", handlerObject: this, handlerMethod: \"handleRemoveEvent\"}\n            ]);\n        }\n    }.bind(this));\n\n    this.parentDomNode.insertBefore(domNode, this.nextSibling);\n};\n\n// When the user clicks the clear-all button, remove all checks\nCheckListWidget.prototype.handleClearChecksEvent = function(event) {\n    var domItem = event.target.parentNode;\n    var domList = domItem.parentNode;\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\"\\n\");\n    var bodyLen = bodyList.length;\n\n    for (var i = 0; i < bodyLen; i++) {\n        bodyList[i] = bodyList[i].replace(\"[x]\", \"[ ]\");\n        bodyList[i] = bodyList[i].replace(\"[X]\", \"[ ]\");\n    }\n\n    // Save the updated body\n    var newBody = tiddlerBody.substring(0, this.startPos) +\n                  bodyList.join(\"\\n\") +\n                  tiddlerBody.substring(this.stopPos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, newBody);\n};\n\n// On blur or enter, save the new list item\nCheckListWidget.prototype.handleBlurNewItemEvent = function(event) {\n    if (event.type == \"keyup\" && event.keyCode != 13) {\n        // This function receives both blur and keyup events.\n        // Only run on blur or enter key\n        return;\n    }\n\n    if (event.target.value.trim() === \"\") {\n        // Don't save an empty list item\n        return;\n    }\n\n    var checklist = event.target.parentNode.parentNode;\n    var firstItem = checklist.childNodes[1];\n    var pos = firstItem.childNodes[0].attributes.pos.nodeValue;\n\n    var newItem = \"[ ] \" + event.target.value.trim() + \"\\n\";\n    event.target.value = \"\";\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    tiddlerBody = tiddlerBody.substring(0, pos) + newItem + tiddlerBody.substring(pos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, tiddlerBody);\n};\n\nCheckListWidget.prototype.handleCheckEvent = function(event) {\n    var domItem = event.target.parentNode;\n    var domList = domItem.parentNode;\n    var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\"\\n\");\n\n    // Find the index of the first checked item\n    var i = 1;\n    var firstChecked = domItem.nextSibling;\n    while (firstChecked !== null && !firstChecked.childNodes[0].checked) {\n        i++;\n        firstChecked = firstChecked.nextSibling;\n    }\n\n    // Update the tiddler data\n    bodyList[itemIndex] = bodyList[itemIndex].replace(\"[ ]\", \"[x]\");\n\n    // Rearrange items (if configured to do so)\n    var shouldMove = this.shouldMoveChecked();\n    if (shouldMove) {\n        bodyList.splice(itemIndex + i, 0, bodyList[itemIndex]);\n        bodyList.splice(itemIndex, 1);\n    }\n\n    // Save the updated body\n    var newBody = tiddlerBody.substring(0, this.startPos) +\n                  bodyList.join(\"\\n\") +\n                  tiddlerBody.substring(this.stopPos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, newBody);\n\n    if (shouldMove) {\n        // Update the DOM (pre-refresh for animations)\n        domList.insertBefore(domItem, firstChecked);\n    }\n};\n\nCheckListWidget.prototype.handleUncheckEvent = function(event) {\n    var domItem = event.target.parentNode;\n    var domList = domItem.parentNode;\n    var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\"\\n\");\n\n    // Find the index of the first checked item\n    var i = 0;\n    var firstChecked = domList.firstChild.nextSibling; // Skip the newItem input\n    while (firstChecked !== null) {\n        if (firstChecked.childNodes[0].checked || firstChecked == domItem) {\n            break;\n        }\n        i++;\n        firstChecked = firstChecked.nextSibling;\n    }\n\n    // Update the tiddler data\n    bodyList[itemIndex] = bodyList[itemIndex].replace(\"[x]\", \"[ ]\");\n\n    // Rearrange items (if configured to do so)\n    var shouldMove = this.shouldMoveChecked();\n    if (shouldMove) {\n        var bodyItem = bodyList[itemIndex];\n        bodyList.splice(itemIndex, 1);\n        bodyList.splice(i, 0, bodyItem);\n    }\n\n    var newBody = tiddlerBody.substring(0, this.startPos) +\n                  bodyList.join(\"\\n\") +\n                  tiddlerBody.substring(this.stopPos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, newBody);\n\n    if (shouldMove) {\n        // Update the DOM (pre-refresh for animations)\n        domList.insertBefore(domItem, firstChecked);\n    }\n};\n\nCheckListWidget.prototype.handleRemoveEvent = function (event) {\n    var domItem = event.target.parentNode;\n    var domList = domItem.parentNode;\n    var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\"\\n\");\n\n    // Update the tiddler data\n    bodyList.splice(itemIndex, 1);\n    var newBody = tiddlerBody.substring(0, this.startPos) +\n                  bodyList.join(\"\\n\") +\n                  tiddlerBody.substring(this.stopPos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, newBody);\n};\n\n/*\nSelectively refreshes the widget if needed.\nReturns true if the widget or any of its children needed re-rendering\n*/\nCheckListWidget.prototype.refresh = function(changedTiddlers) {\n    var changedAttributes = this.computeAttributes();\n    // Refresh if an attribute has changed, or the type associated with\n    // the target tiddler has changed\n    if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index ||\n            (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n        this.refreshSelf();\n        return true;\n    } else {\n        return this.refreshChildren(changedTiddlers);\n    }\n};\n\nexports.checklist = CheckListWidget;\n\n})();\n",
            "title": "$:/plugins/tgrosinger/tw5-checklist/checklist.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/tgrosinger/tw5-checklist/Configuration": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/Configuration",
            "move-checked": "true",
            "strike-checked": "true",
            "show-clearall": "true",
            "text": "Please see the [[homepage|https://grosinger.net/tw5-checklist/]] for more information on the options.\n\nSave and reload the wiki to activate changes.\n\n<table>\n  <tr>\n    <th align=\"left\">Rearrange checked items:</th>\n    <td>\n        <$checkbox field=\"move-checked\" tiddler=\"$:/plugins/tgrosinger/tw5-checklist/Configuration\"\n            checked=\"true\" unchecked=\"false\" default=\"true\"></$checkbox>\n    </td>\n  </tr>\n  <tr>\n    <th align=\"left\" class=\"rerendering-required\">Strike checked items: </th>\n    <td>\n        <$checkbox field=\"strike-checked\" tiddler=\"$:/plugins/tgrosinger/tw5-checklist/Configuration\"\n            checked=\"true\" unchecked=\"false\" default=\"true\"></$checkbox>\n    </td>\n  </tr>\n  <tr>\n    <th align=\"left\" class=\"rerendering-required\">Show Clear-All: </th>\n    <td>\n        <$checkbox field=\"show-clearall\" tiddler=\"$:/plugins/tgrosinger/tw5-checklist/Configuration\"\n            checked=\"true\" unchecked=\"false\" default=\"true\"></$checkbox>\n    </td>\n  </tr>\n</table>\n\n&#42; make a change in a list to see the effect (check/uncheck or add/delete an item).\n\n<style>\n.rerendering-required:after {\n    content: ' *';\n    color: #e32;\n}\n</style>\n"
        },
        "$:/plugins/tgrosinger/tw5-checklist/license": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/license",
            "text": "The MIT License (MIT)\n\nCopyright (c) 2015 Tony Grosinger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
        },
        "$:/plugins/tgrosinger/tw5-checklist/readme": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/readme",
            "text": "This plugin provides a simple checklist which does not create a new tiddler for\neach task. Features include:\n\n[x] Check and uncheck items\n[x] Simple, no configuration necessary\n[x] Easily editable, and easy to read in edit view\n[x] Add new list items without using edit mode\n[x] Move completed items to bottom of list\n\n[[Source code|https://github.com/tgrosinger/tw5-checklist]]\n"
        },
        "$:/plugins/tgrosinger/tw5-checklist/stylesheet": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/stylesheet",
            "tags": "$:/tags/Stylesheet",
            "text": "ul.checklist {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n}\n\nul.checklist > li {\n    position: relative;\n    width: calc(100% - 1em);\n}\n\n\n/* input form */\n\n.checklist-newitem-icon::before {\n    content: \"&#x270e;\";\n}\n\ninput.checklist-newitem {\n    margin-left: 1em;\n    margin-bottom: 0.75em;\n    padding: 2px;\n    border: none;\n    border-bottom: solid 2px <<colour sidebar-tab-background>>;\n    transition: border 0.3s;\n    width: calc(100% - 2em - 20px);\n}\n\ninput:focus.checklist-newitem {\n    border-bottom: solid 2px <<colour notification-border>>;\n}\n\n\n/* placeholder text */\n\n::-webkit-input-placeholder { \n  color: #444;\n  font-style: italic;\n}\n::-moz-placeholder { \n  color: #444;\n  font-style: italic;\n}\n:-ms-input-placeholder { \n  color: #444;\n  font-style: italic;\n}\n:-moz-placeholder { \n  color: #444;\n  font-style: italic;\n}\n::placeholder {\n  color: #444;\n  font-style: italic;\n}\n\n\n/* list items content */\n\n.checklist li input[type=\"checkbox\"] {\n    vertical-align: top;\n    margin-top: 4px;\n}\n\n.checklist label {\n    display: inline-block;\n    position: relative;\n    margin-left: -1em;\n    padding-left: 0.4em;\n    left: 1.4em;\n    width: calc(100% - 2em - 20px);\n}\n\n.checklist > li:hover label, \n.checklist input[type=\"checkbox\"]:hover + button + label, \n.checklist input[type=\"checkbox\"]:focus + button + label  {\n    background-color: <<colour sidebar-tab-background>>;\n}\n\ninput:checked + .checklist-remove + label {\n    opacity: 0.5;\n}\n\n.checklist li input + .checklist-remove:hover + label,\n.checklist li input + .checklist-remove:focus + label  {\n    background-color:  rgba(255,0,0,0.25);\n    opacity: 0.8;\n    border-radius: 5px;\n}\n\n/* strike checked items only if set in user configuration */\n<$list filter=\"[[$:/plugins/tgrosinger/tw5-checklist/Configuration]field:strike-checked[true]]\">\ninput:checked + .checklist-remove + label {\n    text-decoration: line-through;\n}\n</$list>\n\n\n/* buttons */\n\nbutton.checklist-add {\n    position: relative;\n    left: 0.75em;\n    width: 18px;\n    height: 18px;\n    border-radius: 5px;\nbackground-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2211%22%20height%3D%2211%22%3E%0A%3Crect%20width%3D%221%22%20height%3D%227%22%20x%3D%225%22%20y%3D%222%22%20fill%3D%22%239B9B9B%22%2F%3E%0A%3Crect%20width%3D%227%22%20height%3D%221%22%20x%3D%222%22%20y%3D%225%22%20fill%3D%22%239B9B9B%22%2F%3E%0A%3C%2Fsvg%3E');\n    background-size: 100%;\n}\n\nbutton.checklist-add:hover, button.checklist-add:focus {\n    background-color: <<colour sidebar-tab-background>>;\n}\n\nbutton.checklist-remove {\n    display: block;\n    position: absolute;\n    top: 2px;\n    right: -6px;\n    width: 18px;\n    height: 18px;\n    border-radius: 5px;\n    color: <<colour sidebar-muted-foreground>>;\nbackground-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2211%22%20height%3D%2211%22%3E%0A%3Crect%20width%3D%225%22%20height%3D%221%22%20x%3D%223%22%20y%3D%225%22%20fill%3D%22%23444%22%2F%3E%0A%3C%2Fsvg%3E');\n    background-size: 100%;\n/*    background-color: <<colour sidebar-tab-background-selected>>; */\n    border: 1px solid <<colour sidebar-tab-background>>;\n}\n\nul.checklist > li:hover button.checklist-remove {\n    color: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton.checklist-remove:hover,\nbutton.checklist-remove:focus {\n    color:  <<colour dirty-indicator>>;\n    background-color: <<colour sidebar-tab-background>>;\n}\n\nbutton.checklist-clearall {\n    margin-top: 0.75em;\n}\n\nbutton.checklist-clearall::before {\n    content: \"↻ \";\n}\n\n\n/* visualliy hidden, accessible for screen reader */\n\n.checklist-vh {\n    position: absolute !important;\n    clip: rect(1px, 1px, 1px, 1px);\n    padding:0 !important;\n    border:0 !important;\n    height: 1px !important;\n    width: 1px !important;\n    overflow: hidden;\n}\n"
        },
        "$:/plugins/tgrosinger/tw5-checklist/Usage": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/Usage",
            "text": "! Creating a New Checklist\n\nThis plugin provides a wikitext rule for use in normal wikitext tiddlers. A\nchecklist is defined as two brackets with either a <kbd>space</kbd> or an\n<kbd>x</kbd> between them.\n\n```\n! My Shopping List\n\n[ ] Milk\n[ ] Eggs\n[x] Bread\n\n```\n\n!! Multiple Checklists\n\nThere is no need to declare an instance of a checklist, and you can place\nchecklist items throughout a tiddler. Each set of consecutive (single new-line\ndelimited) checklist items will be displayed as a single checklist.\n\n```\n! My first list\n\n[ ] Item 1\n[x] Item 2\n\n! My second list\n\n[x] Item 3\n[x] Item 4\n\n```\n\n!! List Item Formatting\n\nList items support any inline formatting rules. This means you can create links,\nbold, or anything else found on the\n[[Formatting in WikiText|http://tiddlywiki.com/static/Formatting%2520in%2520WikiText.html]] guide.\n\n! Configuration\n\nPlease see [[the configuration|$:/plugins/tgrosinger/tw5-checklist/Configuration]]\npage to learn about and adjust configuration options.\n"
        }
    }
}
{
    "tiddlers": {
        "$:/config/HighlightPlugin/TypeMappings/application/javascript": {
            "title": "$:/config/HighlightPlugin/TypeMappings/application/javascript",
            "text": "javascript"
        },
        "$:/config/HighlightPlugin/TypeMappings/application/json": {
            "title": "$:/config/HighlightPlugin/TypeMappings/application/json",
            "text": "json"
        },
        "$:/config/HighlightPlugin/TypeMappings/text/css": {
            "title": "$:/config/HighlightPlugin/TypeMappings/text/css",
            "text": "css"
        },
        "$:/config/HighlightPlugin/TypeMappings/text/html": {
            "title": "$:/config/HighlightPlugin/TypeMappings/text/html",
            "text": "html"
        },
        "$:/config/HighlightPlugin/TypeMappings/image/svg+xml": {
            "title": "$:/config/HighlightPlugin/TypeMappings/image/svg+xml",
            "text": "xml"
        },
        "$:/config/HighlightPlugin/TypeMappings/text/x-markdown": {
            "title": "$:/config/HighlightPlugin/TypeMappings/text/x-markdown",
            "text": "markdown"
        },
        "$:/plugins/tiddlywiki/highlight/highlight.js": {
            "text": "var hljs = require(\"$:/plugins/tiddlywiki/highlight/highlight.js\");\n!function(e){\"undefined\"!=typeof exports?e(exports):(window.hljs=e({}),\"function\"==typeof define&&define.amd&&define(\"hljs\",[],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,\"&amp;\").replace(/</gm,\"&lt;\").replace(/>/gm,\"&gt;\")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){return/^(no-?highlight|plain|text)$/i.test(e)}function i(e){var n,t,r,i=e.className+\" \";if(i+=e.parentNode?e.parentNode.className:\"\",t=/\\blang(?:uage)?-([\\w-]+)\\b/i.exec(i))return w(t[1])?t[1]:\"no-highlight\";for(i=i.split(/\\s+/),n=0,r=i.length;r>n;n++)if(w(i[n])||a(i[n]))return i[n]}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?a+=i.nodeValue.length:1==i.nodeType&&(n.push({event:\"start\",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:\"stop\",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset<r[0].offset?e:r:\"start\"==r[0].event?e:r:e.length?e:r}function o(e){function r(e){return\" \"+e.nodeName+'=\"'+n(e.value)+'\"'}f+=\"<\"+t(e)+Array.prototype.map.call(e.attributes,r).join(\"\")+\">\"}function u(e){f+=\"</\"+t(e)+\">\"}function c(e){(\"start\"==e.event?o:u)(e.node)}for(var s=0,f=\"\",l=[];e.length||r.length;){var g=i();if(f+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){l.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g==e&&g.length&&g[0].offset==s);l.reverse().forEach(o)}else\"start\"==g[0].event?l.push(g[0].node):l.pop(),c(g.splice(0,1)[0])}return f+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),\"m\"+(e.cI?\"i\":\"\")+(r?\"g\":\"\"))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(\" \").forEach(function(e){var t=e.split(\"|\");u[t[0]]=[n,t[1]?Number(t[1]):1]})};\"string\"==typeof a.k?c(\"keyword\",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\\b\\w+\\b/,!0),i&&(a.bK&&(a.b=\"\\\\b(\"+a.bK.split(\" \").join(\"|\")+\")\\\\b\"),a.b||(a.b=/\\B|\\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\\B|\\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||\"\",a.eW&&i.tE&&(a.tE+=(a.e?\"|\":\"\")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push(\"self\"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var f=a.c.map(function(e){return e.bK?\"\\\\.?(\"+e.b+\")\\\\.?\":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=f.length?t(f.join(\"|\"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){for(var t=0;t<n.c.length;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function g(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function h(e,n,t,r){var a=r?\"\":E.classPrefix,i='<span class=\"'+a,o=t?\"\":\"</span>\";return i+=e+'\">',i+n+o}function p(){if(!L.k)return n(y);var e=\"\",t=0;L.lR.lastIndex=0;for(var r=L.lR.exec(y);r;){e+=n(y.substr(t,r.index-t));var a=g(L,r);a?(B+=a[1],e+=h(a[0],n(r[0]))):e+=n(r[0]),t=L.lR.lastIndex,r=L.lR.exec(y)}return e+n(y.substr(t))}function d(){var e=\"string\"==typeof L.sL;if(e&&!x[L.sL])return n(y);var t=e?f(L.sL,y,!0,M[L.sL]):l(y,L.sL.length?L.sL:void 0);return L.r>0&&(B+=t.r),e&&(M[L.sL]=t.top),h(t.language,t.value,!1,!0)}function b(){return void 0!==L.sL?d():p()}function v(e,t){var r=e.cN?h(e.cN,\"\",!0):\"\";e.rB?(k+=r,y=\"\"):e.eB?(k+=n(t)+r,y=\"\"):(k+=r,y=t),L=Object.create(e,{parent:{value:L}})}function m(e,t){if(y+=e,void 0===t)return k+=b(),0;var r=o(t,L);if(r)return k+=b(),v(r,t),r.rB?0:t.length;var a=u(L,t);if(a){var i=L;i.rE||i.eE||(y+=t),k+=b();do L.cN&&(k+=\"</span>\"),B+=L.r,L=L.parent;while(L!=a.parent);return i.eE&&(k+=n(t)),y=\"\",a.starts&&v(a.starts,\"\"),i.rE?0:t.length}if(c(t,L))throw new Error('Illegal lexeme \"'+t+'\" for mode \"'+(L.cN||\"<unnamed>\")+'\"');return y+=t,t.length||1}var N=w(e);if(!N)throw new Error('Unknown language: \"'+e+'\"');s(N);var R,L=i||N,M={},k=\"\";for(R=L;R!=N;R=R.parent)R.cN&&(k=h(R.cN,\"\",!0)+k);var y=\"\",B=0;try{for(var C,j,I=0;;){if(L.t.lastIndex=I,C=L.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}for(m(t.substr(I)),R=L;R.parent;R=R.parent)R.cN&&(k+=\"</span>\");return{r:B,value:k,language:e,top:L}}catch(O){if(-1!=O.message.indexOf(\"Illegal\"))return{r:0,value:n(t)};throw O}}function l(e,t){t=t||E.languages||Object.keys(x);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(w(n)){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function g(e){return E.tabReplace&&(e=e.replace(/^((<[^>]+>|\\t)+)/gm,function(e,n){return n.replace(/\\t/g,E.tabReplace)})),E.useBR&&(e=e.replace(/\\n/g,\"<br>\")),e}function h(e,n,t){var r=n?R[n]:t,a=[e.trim()];return e.match(/\\bhljs\\b/)||a.push(\"hljs\"),-1===e.indexOf(r)&&a.push(r),a.join(\" \").trim()}function p(e){var n=i(e);if(!a(n)){var t;E.useBR?(t=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\"),t.innerHTML=e.innerHTML.replace(/\\n/g,\"\").replace(/<br[ \\/]*>/g,\"\\n\")):t=e;var r=t.textContent,o=n?f(n,r,!0):l(r),s=u(t);if(s.length){var p=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\");p.innerHTML=o.value,o.value=c(s,u(p),r)}o.value=g(o.value),e.innerHTML=o.value,e.className=h(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){E=o(E,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll(\"pre code\");Array.prototype.forEach.call(e,p)}}function v(){addEventListener(\"DOMContentLoaded\",b,!1),addEventListener(\"load\",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){R[e]=n})}function N(){return Object.keys(x)}function w(e){return e=e.toLowerCase(),x[e]||x[R[e]]}var E={classPrefix:\"hljs-\",tabReplace:null,useBR:!1,languages:void 0},x={},R={};return e.highlight=f,e.highlightAuto=l,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=w,e.inherit=o,e.IR=\"[a-zA-Z]\\\\w*\",e.UIR=\"[a-zA-Z_]\\\\w*\",e.NR=\"\\\\b\\\\d+(\\\\.\\\\d+)?\",e.CNR=\"(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",e.BNR=\"\\\\b(0b[01]+)\",e.RSR=\"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\",e.BE={b:\"\\\\\\\\[\\\\s\\\\S]\",r:0},e.ASM={cN:\"string\",b:\"'\",e:\"'\",i:\"\\\\n\",c:[e.BE]},e.QSM={cN:\"string\",b:'\"',e:'\"',i:\"\\\\n\",c:[e.BE]},e.PWM={b:/\\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\\b/},e.C=function(n,t,r){var a=e.inherit({cN:\"comment\",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:\"doctag\",b:\"(?:TODO|FIXME|NOTE|BUG|XXX):\",r:0}),a},e.CLCM=e.C(\"//\",\"$\"),e.CBCM=e.C(\"/\\\\*\",\"\\\\*/\"),e.HCM=e.C(\"#\",\"$\"),e.NM={cN:\"number\",b:e.NR,r:0},e.CNM={cN:\"number\",b:e.CNR,r:0},e.BNM={cN:\"number\",b:e.BNR,r:0},e.CSSNM={cN:\"number\",b:e.NR+\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",r:0},e.RM={cN:\"regexp\",b:/\\//,e:/\\/[gimuy]*/,i:/\\n/,c:[e.BE,{b:/\\[/,e:/\\]/,r:0,c:[e.BE]}]},e.TM={cN:\"title\",b:e.IR,r:0},e.UTM={cN:\"title\",b:e.UIR,r:0},e});hljs.registerLanguage(\"markdown\",function(e){return{aliases:[\"md\",\"mkdown\",\"mkd\"],c:[{cN:\"header\",v:[{b:\"^#{1,6}\",e:\"$\"},{b:\"^.+?\\\\n[=-]{2,}$\"}]},{b:\"<\",e:\">\",sL:\"xml\",r:0},{cN:\"bullet\",b:\"^([*+-]|(\\\\d+\\\\.))\\\\s+\"},{cN:\"strong\",b:\"[*_]{2}.+?[*_]{2}\"},{cN:\"emphasis\",v:[{b:\"\\\\*.+?\\\\*\"},{b:\"_.+?_\",r:0}]},{cN:\"blockquote\",b:\"^>\\\\s+\",e:\"$\"},{cN:\"code\",v:[{b:\"`.+?`\"},{b:\"^( {4}|\t)\",e:\"$\",r:0}]},{cN:\"horizontal_rule\",b:\"^[-\\\\*]{3,}\",e:\"$\"},{b:\"\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]\",rB:!0,c:[{cN:\"link_label\",b:\"\\\\[\",e:\"\\\\]\",eB:!0,rE:!0,r:0},{cN:\"link_url\",b:\"\\\\]\\\\(\",e:\"\\\\)\",eB:!0,eE:!0},{cN:\"link_reference\",b:\"\\\\]\\\\[\",e:\"\\\\]\",eB:!0,eE:!0}],r:10},{b:\"^\\\\[.+\\\\]:\",rB:!0,c:[{cN:\"link_reference\",b:\"\\\\[\",e:\"\\\\]:\",eB:!0,eE:!0,starts:{cN:\"link_url\",e:\"$\"}}]}]}});hljs.registerLanguage(\"ruby\",function(e){var c=\"[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?\",r=\"and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor\",b={cN:\"doctag\",b:\"@[A-Za-z]+\"},a={cN:\"value\",b:\"#<\",e:\">\"},n=[e.C(\"#\",\"$\",{c:[b]}),e.C(\"^\\\\=begin\",\"^\\\\=end\",{c:[b],r:10}),e.C(\"^__END__\",\"\\\\n$\")],s={cN:\"subst\",b:\"#\\\\{\",e:\"}\",k:r},t={cN:\"string\",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/\"/,e:/\"/},{b:/`/,e:/`/},{b:\"%[qQwWx]?\\\\(\",e:\"\\\\)\"},{b:\"%[qQwWx]?\\\\[\",e:\"\\\\]\"},{b:\"%[qQwWx]?{\",e:\"}\"},{b:\"%[qQwWx]?<\",e:\">\"},{b:\"%[qQwWx]?/\",e:\"/\"},{b:\"%[qQwWx]?%\",e:\"%\"},{b:\"%[qQwWx]?-\",e:\"-\"},{b:\"%[qQwWx]?\\\\|\",e:\"\\\\|\"},{b:/\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b/}]},i={cN:\"params\",b:\"\\\\(\",e:\"\\\\)\",k:r},d=[t,a,{cN:\"class\",bK:\"class module\",e:\"$|;\",i:/=/,c:[e.inherit(e.TM,{b:\"[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?\"}),{cN:\"inheritance\",b:\"<\\\\s*\",c:[{cN:\"parent\",b:\"(\"+e.IR+\"::)?\"+e.IR}]}].concat(n)},{cN:\"function\",bK:\"def\",e:\"$|;\",c:[e.inherit(e.TM,{b:c}),i].concat(n)},{cN:\"constant\",b:\"(::)?(\\\\b[A-Z]\\\\w*(::)?)+\",r:0},{cN:\"symbol\",b:e.UIR+\"(\\\\!|\\\\?)?:\",r:0},{cN:\"symbol\",b:\":\",c:[t,{b:c}],r:0},{cN:\"number\",b:\"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",r:0},{cN:\"variable\",b:\"(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))\"},{b:\"(\"+e.RSR+\")\\\\s*\",c:[a,{cN:\"regexp\",c:[e.BE,s],i:/\\n/,v:[{b:\"/\",e:\"/[a-z]*\"},{b:\"%r{\",e:\"}[a-z]*\"},{b:\"%r\\\\(\",e:\"\\\\)[a-z]*\"},{b:\"%r!\",e:\"![a-z]*\"},{b:\"%r\\\\[\",e:\"\\\\][a-z]*\"}]}].concat(n),r:0}].concat(n);s.c=d,i.c=d;var o=\"[>?]>\",l=\"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>\",u=\"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>\",N=[{b:/^\\s*=>/,cN:\"status\",starts:{e:\"$\",c:d}},{cN:\"prompt\",b:\"^(\"+o+\"|\"+l+\"|\"+u+\")\",starts:{e:\"$\",c:d}}];return{aliases:[\"rb\",\"gemspec\",\"podspec\",\"thor\",\"irb\"],k:r,c:n.concat(N).concat(d)}});hljs.registerLanguage(\"makefile\",function(e){var a={cN:\"variable\",b:/\\$\\(/,e:/\\)/,c:[e.BE]};return{aliases:[\"mk\",\"mak\"],c:[e.HCM,{b:/^\\w+\\s*\\W*=/,rB:!0,r:0,starts:{cN:\"constant\",e:/\\s*\\W*=/,eE:!0,starts:{e:/$/,r:0,c:[a]}}},{cN:\"title\",b:/^[\\w]+:\\s*$/},{cN:\"phony\",b:/^\\.PHONY:/,e:/$/,k:\".PHONY\",l:/[\\.\\w]+/},{b:/^\\t+/,e:/$/,r:0,c:[e.QSM,a]}]}});hljs.registerLanguage(\"json\",function(e){var t={literal:\"true false null\"},i=[e.QSM,e.CNM],l={cN:\"value\",e:\",\",eW:!0,eE:!0,c:i,k:t},c={b:\"{\",e:\"}\",c:[{cN:\"attribute\",b:'\\\\s*\"',e:'\"\\\\s*:\\\\s*',eB:!0,eE:!0,c:[e.BE],i:\"\\\\n\",starts:l}],i:\"\\\\S\"},n={b:\"\\\\[\",e:\"\\\\]\",c:[e.inherit(l,{cN:null})],i:\"\\\\S\"};return i.splice(i.length,0,c,n),{c:i,k:t,i:\"\\\\S\"}});hljs.registerLanguage(\"xml\",function(t){var s=\"[A-Za-z0-9\\\\._:-]+\",c={b:/<\\?(php)?(?!\\w)/,e:/\\?>/,sL:\"php\"},e={eW:!0,i:/</,r:0,c:[c,{cN:\"attribute\",b:s,r:0},{b:\"=\",r:0,c:[{cN:\"value\",c:[c],v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/},{b:/[^\\s\\/>]+/}]}]}]};return{aliases:[\"html\",\"xhtml\",\"rss\",\"atom\",\"xsl\",\"plist\"],cI:!0,c:[{cN:\"doctype\",b:\"<!DOCTYPE\",e:\">\",r:10,c:[{b:\"\\\\[\",e:\"\\\\]\"}]},t.C(\"<!--\",\"-->\",{r:10}),{cN:\"cdata\",b:\"<\\\\!\\\\[CDATA\\\\[\",e:\"\\\\]\\\\]>\",r:10},{cN:\"tag\",b:\"<style(?=\\\\s|>|$)\",e:\">\",k:{title:\"style\"},c:[e],starts:{e:\"</style>\",rE:!0,sL:\"css\"}},{cN:\"tag\",b:\"<script(?=\\\\s|>|$)\",e:\">\",k:{title:\"script\"},c:[e],starts:{e:\"</script>\",rE:!0,sL:[\"actionscript\",\"javascript\",\"handlebars\"]}},c,{cN:\"pi\",b:/<\\?\\w+/,e:/\\?>/,r:10},{cN:\"tag\",b:\"</?\",e:\"/?>\",c:[{cN:\"title\",b:/[^ \\/><\\n\\t]+/,r:0},e]}]}});hljs.registerLanguage(\"css\",function(e){var c=\"[a-zA-Z-][a-zA-Z0-9_-]*\",a={cN:\"function\",b:c+\"\\\\(\",rB:!0,eE:!0,e:\"\\\\(\"},r={cN:\"rule\",b:/[A-Z\\_\\.\\-]+\\s*:/,rB:!0,e:\";\",eW:!0,c:[{cN:\"attribute\",b:/\\S/,e:\":\",eE:!0,starts:{cN:\"value\",eW:!0,eE:!0,c:[a,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:\"hexcolor\",b:\"#[0-9A-Fa-f]+\"},{cN:\"important\",b:\"!important\"}]}}]};return{cI:!0,i:/[=\\/|'\\$]/,c:[e.CBCM,r,{cN:\"id\",b:/\\#[A-Za-z0-9_-]+/},{cN:\"class\",b:/\\.[A-Za-z0-9_-]+/},{cN:\"attr_selector\",b:/\\[/,e:/\\]/,i:\"$\"},{cN:\"pseudo\",b:/:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"']+/},{cN:\"at_rule\",b:\"@(font-face|page)\",l:\"[a-z-]+\",k:\"font-face page\"},{cN:\"at_rule\",b:\"@\",e:\"[{;]\",c:[{cN:\"keyword\",b:/\\S+/},{b:/\\s/,eW:!0,eE:!0,r:0,c:[a,e.ASM,e.QSM,e.CSSNM]}]},{cN:\"tag\",b:c,r:0},{cN:\"rules\",b:\"{\",e:\"}\",i:/\\S/,c:[e.CBCM,r]}]}});hljs.registerLanguage(\"perl\",function(e){var t=\"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when\",r={cN:\"subst\",b:\"[$@]\\\\{\",e:\"\\\\}\",k:t},s={b:\"->{\",e:\"}\"},n={cN:\"variable\",v:[{b:/\\$\\d/},{b:/[\\$%@](\\^\\w\\b|#\\w+(::\\w+)*|{\\w+}|\\w+(::\\w*)*)/},{b:/[\\$%@][^\\s\\w{]/,r:0}]},o=[e.BE,r,n],i=[n,e.HCM,e.C(\"^\\\\=\\\\w\",\"\\\\=cut\",{eW:!0}),s,{cN:\"string\",c:o,v:[{b:\"q[qwxr]?\\\\s*\\\\(\",e:\"\\\\)\",r:5},{b:\"q[qwxr]?\\\\s*\\\\[\",e:\"\\\\]\",r:5},{b:\"q[qwxr]?\\\\s*\\\\{\",e:\"\\\\}\",r:5},{b:\"q[qwxr]?\\\\s*\\\\|\",e:\"\\\\|\",r:5},{b:\"q[qwxr]?\\\\s*\\\\<\",e:\"\\\\>\",r:5},{b:\"qw\\\\s+q\",e:\"q\",r:5},{b:\"'\",e:\"'\",c:[e.BE]},{b:'\"',e:'\"'},{b:\"`\",e:\"`\",c:[e.BE]},{b:\"{\\\\w+}\",c:[],r:0},{b:\"-?\\\\w+\\\\s*\\\\=\\\\>\",c:[],r:0}]},{cN:\"number\",b:\"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",r:0},{b:\"(\\\\/\\\\/|\"+e.RSR+\"|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*\",k:\"split return print reverse grep\",r:0,c:[e.HCM,{cN:\"regexp\",b:\"(s|tr|y)/(\\\\\\\\.|[^/])*/(\\\\\\\\.|[^/])*/[a-z]*\",r:10},{cN:\"regexp\",b:\"(m|qr)?/\",e:\"/[a-z]*\",c:[e.BE],r:0}]},{cN:\"sub\",bK:\"sub\",e:\"(\\\\s*\\\\(.*?\\\\))?[;{]\",r:5},{cN:\"operator\",b:\"-\\\\w\\\\b\",r:0},{b:\"^__DATA__$\",e:\"^__END__$\",sL:\"mojolicious\",c:[{b:\"^@@.*\",e:\"$\",cN:\"comment\"}]}];return r.c=i,s.c=i,{aliases:[\"pl\"],k:t,c:i}});hljs.registerLanguage(\"cs\",function(e){var r=\"abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield\",t=e.IR+\"(<\"+e.IR+\">)?\";return{aliases:[\"csharp\"],k:r,i:/::/,c:[e.C(\"///\",\"$\",{rB:!0,c:[{cN:\"xmlDocTag\",v:[{b:\"///\",r:0},{b:\"<!--|-->\"},{b:\"</?\",e:\">\"}]}]}),e.CLCM,e.CBCM,{cN:\"preprocessor\",b:\"#\",e:\"$\",k:\"if else elif endif define undef warning error line region endregion pragma checksum\"},{cN:\"string\",b:'@\"',e:'\"',c:[{b:'\"\"'}]},e.ASM,e.QSM,e.CNM,{bK:\"class interface\",e:/[{;=]/,i:/[^\\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:\"namespace\",e:/[{;=]/,i:/[^\\s:]/,c:[{cN:\"title\",b:\"[a-zA-Z](\\\\.?\\\\w)*\",r:0},e.CLCM,e.CBCM]},{bK:\"new return throw await\",r:0},{cN:\"function\",b:\"(\"+t+\"\\\\s+)+\"+e.IR+\"\\\\s*\\\\(\",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.IR+\"\\\\s*\\\\(\",rB:!0,c:[e.TM],r:0},{cN:\"params\",b:/\\(/,e:/\\)/,eB:!0,eE:!0,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage(\"apache\",function(e){var r={cN:\"number\",b:\"[\\\\$%]\\\\d+\"};return{aliases:[\"apacheconf\"],cI:!0,c:[e.HCM,{cN:\"tag\",b:\"</?\",e:\">\"},{cN:\"keyword\",b:/\\w+/,r:0,k:{common:\"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername\"},starts:{e:/$/,r:0,k:{literal:\"on off all\"},c:[{cN:\"sqbracket\",b:\"\\\\s\\\\[\",e:\"\\\\]$\"},{cN:\"cbracket\",b:\"[\\\\$%]\\\\{\",e:\"\\\\}\",c:[\"self\",r]},r,e.QSM]}}],i:/\\S/}});hljs.registerLanguage(\"http\",function(t){return{aliases:[\"https\"],i:\"\\\\S\",c:[{cN:\"status\",b:\"^HTTP/[0-9\\\\.]+\",e:\"$\",c:[{cN:\"number\",b:\"\\\\b\\\\d{3}\\\\b\"}]},{cN:\"request\",b:\"^[A-Z]+ (.*?) HTTP/[0-9\\\\.]+$\",rB:!0,e:\"$\",c:[{cN:\"string\",b:\" \",e:\" \",eB:!0,eE:!0}]},{cN:\"attribute\",b:\"^\\\\w\",e:\": \",eE:!0,i:\"\\\\n|\\\\s|=\",starts:{cN:\"string\",e:\"$\"}},{b:\"\\\\n\\\\n\",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage(\"objectivec\",function(e){var t={cN:\"built_in\",b:\"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\\\w+\"},i={keyword:\"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required\",literal:\"false true FALSE TRUE nil YES NO NULL\",built_in:\"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once\"},o=/[a-zA-Z@][a-zA-Z0-9_]*/,n=\"@interface @class @protocol @implementation\";return{aliases:[\"mm\",\"objc\",\"obj-c\"],k:i,l:o,i:\"</\",c:[t,e.CLCM,e.CBCM,e.CNM,e.QSM,{cN:\"string\",v:[{b:'@\"',e:'\"',i:\"\\\\n\",c:[e.BE]},{b:\"'\",e:\"[^\\\\\\\\]'\",i:\"[^\\\\\\\\][^']\"}]},{cN:\"preprocessor\",b:\"#\",e:\"$\",c:[{cN:\"title\",v:[{b:'\"',e:'\"'},{b:\"<\",e:\">\"}]}]},{cN:\"class\",b:\"(\"+n.split(\" \").join(\"|\")+\")\\\\b\",e:\"({|$)\",eE:!0,k:n,l:o,c:[e.UTM]},{cN:\"variable\",b:\"\\\\.\"+e.UIR,r:0}]}});hljs.registerLanguage(\"python\",function(e){var r={cN:\"prompt\",b:/^(>>>|\\.\\.\\.) /},b={cN:\"string\",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?\"\"\"/,e:/\"\"\"/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)\"/,e:/\"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)\"/,e:/\"/},e.ASM,e.QSM]},a={cN:\"number\",r:0,v:[{b:e.BNR+\"[lLjJ]?\"},{b:\"\\\\b(0o[0-7]+)[lLjJ]?\"},{b:e.CNR+\"[lLjJ]?\"}]},l={cN:\"params\",b:/\\(/,e:/\\)/,c:[\"self\",r,a,b]};return{aliases:[\"py\",\"gyp\"],k:{keyword:\"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False\",built_in:\"Ellipsis NotImplemented\"},i:/(<\\/|->|\\?)/,c:[r,a,b,e.HCM,{v:[{cN:\"function\",bK:\"def\",r:10},{cN:\"class\",bK:\"class\"}],e:/:/,i:/[${=;\\n,]/,c:[e.UTM,l]},{cN:\"decorator\",b:/^[\\t ]*@/,e:/$/},{b:/\\b(print|exec)\\(/}]}});hljs.registerLanguage(\"java\",function(e){var a=e.UIR+\"(<\"+e.UIR+\">)?\",t=\"false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private\",c=\"\\\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?|\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))([eE][-+]?\\\\d+)?)[lLfF]?\",r={cN:\"number\",b:c,r:0};return{aliases:[\"jsp\"],k:t,i:/<\\/|#/,c:[e.C(\"/\\\\*\\\\*\",\"\\\\*/\",{r:0,c:[{cN:\"doctag\",b:\"@[A-Za-z]+\"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:\"class\",bK:\"class interface\",e:/[{;=]/,eE:!0,k:\"class interface\",i:/[:\"\\[\\]]/,c:[{bK:\"extends implements\"},e.UTM]},{bK:\"new throw return else\",r:0},{cN:\"function\",b:\"(\"+a+\"\\\\s+)+\"+e.UIR+\"\\\\s*\\\\(\",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+\"\\\\s*\\\\(\",rB:!0,r:0,c:[e.UTM]},{cN:\"params\",b:/\\(/,e:/\\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:\"annotation\",b:\"@[A-Za-z]+\"}]}});hljs.registerLanguage(\"bash\",function(e){var t={cN:\"variable\",v:[{b:/\\$[\\w\\d#@][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},s={cN:\"string\",b:/\"/,e:/\"/,c:[e.BE,t,{cN:\"variable\",b:/\\$\\(/,e:/\\)/,c:[e.BE]}]},a={cN:\"string\",b:/'/,e:/'/};return{aliases:[\"sh\",\"zsh\"],l:/-?[a-z\\.]+/,k:{keyword:\"if then else elif fi for while in do done case esac function\",literal:\"true false\",built_in:\"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp\",operator:\"-ne -eq -lt -gt -f -d -e -s -l -a\"},c:[{cN:\"shebang\",b:/^#![^\\n]+sh\\s*$/,r:10},{cN:\"function\",b:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,rB:!0,c:[e.inherit(e.TM,{b:/\\w[\\w\\d_]*/})],r:0},e.HCM,e.NM,s,a,t]}});hljs.registerLanguage(\"sql\",function(e){var t=e.C(\"--\",\"$\");return{cI:!0,i:/[<>{}*]/,c:[{cN:\"operator\",bK:\"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke\",e:/;/,eW:!0,k:{keyword:\"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes c cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle d data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration e each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract f failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function g general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http i id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists k keep keep_duplicates key keys kill l language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim m main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex n name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding p package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime t table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek\",literal:\"true false null\",built_in:\"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void\"},c:[{cN:\"string\",b:\"'\",e:\"'\",c:[e.BE,{b:\"''\"}]},{cN:\"string\",b:'\"',e:'\"',c:[e.BE,{b:'\"\"'}]},{cN:\"string\",b:\"`\",e:\"`\",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage(\"nginx\",function(e){var r={cN:\"variable\",v:[{b:/\\$\\d+/},{b:/\\$\\{/,e:/}/},{b:\"[\\\\$\\\\@]\"+e.UIR}]},b={eW:!0,l:\"[a-z/_]+\",k:{built_in:\"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll\"},r:0,i:\"=>\",c:[e.HCM,{cN:\"string\",c:[e.BE,r],v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/}]},{cN:\"url\",b:\"([a-z]+):/\",e:\"\\\\s\",eW:!0,eE:!0,c:[r]},{cN:\"regexp\",c:[e.BE,r],v:[{b:\"\\\\s\\\\^\",e:\"\\\\s|{|;\",rE:!0},{b:\"~\\\\*?\\\\s+\",e:\"\\\\s|{|;\",rE:!0},{b:\"\\\\*(\\\\.[a-z\\\\-]+)+\"},{b:\"([a-z\\\\-]+\\\\.)+\\\\*\"}]},{cN:\"number\",b:\"\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b\"},{cN:\"number\",b:\"\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b\",r:0},r]};return{aliases:[\"nginxconf\"],c:[e.HCM,{b:e.UIR+\"\\\\s\",e:\";|{\",rB:!0,c:[{cN:\"title\",b:e.UIR,starts:b}],r:0}],i:\"[^\\\\s\\\\}]\"}});hljs.registerLanguage(\"cpp\",function(t){var e={cN:\"keyword\",b:\"\\\\b[a-z\\\\d_]*_t\\\\b\"},r={cN:\"string\",v:[t.inherit(t.QSM,{b:'((u8?|U)|L)?\"'}),{b:'(u8?|U)?R\"',e:'\"',c:[t.BE]},{b:\"'\\\\\\\\?.\",e:\"'\",i:\".\"}]},s={cN:\"number\",v:[{b:\"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)(u|U|l|L|ul|UL|f|F)\"},{b:t.CNR}]},i={cN:\"preprocessor\",b:\"#\",e:\"$\",k:\"if else elif endif define undef warning error line pragma ifdef ifndef\",c:[{b:/\\\\\\n/,r:0},{bK:\"include\",e:\"$\",c:[r,{cN:\"string\",b:\"<\",e:\">\",i:\"\\\\n\"}]},r,s,t.CLCM,t.CBCM]},a=t.IR+\"\\\\s*\\\\(\",c={keyword:\"int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong\",built_in:\"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf\",literal:\"true false nullptr NULL\"};return{aliases:[\"c\",\"cc\",\"h\",\"c++\",\"h++\",\"hpp\"],k:c,i:\"</\",c:[e,t.CLCM,t.CBCM,s,r,i,{b:\"\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<\",e:\">\",k:c,c:[\"self\",e]},{b:t.IR+\"::\",k:c},{bK:\"new throw return else\",r:0},{cN:\"function\",b:\"(\"+t.IR+\"[\\\\*&\\\\s]+)+\"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\\w\\s\\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:\"params\",b:/\\(/,e:/\\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s]},t.CLCM,t.CBCM,i]}]}});hljs.registerLanguage(\"php\",function(e){var c={cN:\"variable\",b:\"\\\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*\"},a={cN:\"preprocessor\",b:/<\\?(php)?|\\?>/},i={cN:\"string\",c:[e.BE,a],v:[{b:'b\"',e:'\"'},{b:\"b'\",e:\"'\"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},t={v:[e.BNM,e.CNM]};return{aliases:[\"php3\",\"php4\",\"php5\",\"php6\"],cI:!0,k:\"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally\",c:[e.CLCM,e.HCM,e.C(\"/\\\\*\",\"\\\\*/\",{c:[{cN:\"doctag\",b:\"@[A-Za-z]+\"},a]}),e.C(\"__halt_compiler.+?;\",!1,{eW:!0,k:\"__halt_compiler\",l:e.UIR}),{cN:\"string\",b:/<<<['\"]?\\w+['\"]?$/,e:/^\\w+;?$/,c:[e.BE,{cN:\"subst\",v:[{b:/\\$\\w+/},{b:/\\{\\$/,e:/\\}/}]}]},a,c,{b:/(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/},{cN:\"function\",bK:\"function\",e:/[;{]/,eE:!0,i:\"\\\\$|\\\\[|%\",c:[e.UTM,{cN:\"params\",b:\"\\\\(\",e:\"\\\\)\",c:[\"self\",c,e.CBCM,i,t]}]},{cN:\"class\",bK:\"class interface\",e:\"{\",eE:!0,i:/[:\\(\\$\"]/,c:[{bK:\"extends implements\"},e.UTM]},{bK:\"namespace\",e:\";\",i:/[\\.']/,c:[e.UTM]},{bK:\"use\",e:\";\",c:[e.UTM]},{b:\"=>\"},i,t]}});hljs.registerLanguage(\"coffeescript\",function(e){var c={keyword:\"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not\",literal:\"true false null undefined yes no on off\",built_in:\"npm require console print module global window document\"},n=\"[A-Za-z$_][0-9A-Za-z$_]*\",r={cN:\"subst\",b:/#\\{/,e:/}/,k:c},t=[e.BNM,e.inherit(e.CNM,{starts:{e:\"(\\\\s*/)?\",r:0}}),{cN:\"string\",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/\"\"\"/,e:/\"\"\"/,c:[e.BE,r]},{b:/\"/,e:/\"/,c:[e.BE,r]}]},{cN:\"regexp\",v:[{b:\"///\",e:\"///\",c:[r,e.HCM]},{b:\"//[gim]*\",r:0},{b:/\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/}]},{cN:\"property\",b:\"@\"+n},{b:\"`\",e:\"`\",eB:!0,eE:!0,sL:\"javascript\"}];r.c=t;var s=e.inherit(e.TM,{b:n}),i=\"(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>\",o={cN:\"params\",b:\"\\\\([^\\\\(]\",rB:!0,c:[{b:/\\(/,e:/\\)/,k:c,c:[\"self\"].concat(t)}]};return{aliases:[\"coffee\",\"cson\",\"iced\"],k:c,i:/\\/\\*/,c:t.concat([e.C(\"###\",\"###\"),e.HCM,{cN:\"function\",b:\"^\\\\s*\"+n+\"\\\\s*=\\\\s*\"+i,e:\"[-=]>\",rB:!0,c:[s,o]},{b:/[:\\(,=]\\s*/,r:0,c:[{cN:\"function\",b:i,e:\"[-=]>\",rB:!0,c:[o]}]},{cN:\"class\",bK:\"class\",e:\"$\",i:/[:=\"\\[\\]]/,c:[{bK:\"extends\",eW:!0,i:/[:=\"\\[\\]]/,c:[s]},s]},{cN:\"attribute\",b:n+\":\",e:\":\",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage(\"javascript\",function(e){return{aliases:[\"js\"],k:{keyword:\"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await\",literal:\"true false null undefined NaN Infinity\",built_in:\"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise\"},c:[{cN:\"pi\",r:10,b:/^\\s*['\"]use (strict|asm)['\"]/},e.ASM,e.QSM,{cN:\"string\",b:\"`\",e:\"`\",c:[e.BE,{cN:\"subst\",b:\"\\\\$\\\\{\",e:\"\\\\}\"}]},e.CLCM,e.CBCM,{cN:\"number\",v:[{b:\"\\\\b(0[bB][01]+)\"},{b:\"\\\\b(0[oO][0-7]+)\"},{b:e.CNR}],r:0},{b:\"(\"+e.RSR+\"|\\\\b(case|return|throw)\\\\b)\\\\s*\",k:\"return throw case\",c:[e.CLCM,e.CBCM,e.RM,{b:/</,e:/>\\s*[);\\]]/,r:0,sL:\"xml\"}],r:0},{cN:\"function\",bK:\"function\",e:/\\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:\"params\",b:/\\(/,e:/\\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM]}],i:/\\[|%/},{b:/\\$[(.]/},{b:\"\\\\.\"+e.IR,r:0},{bK:\"import\",e:\"[;$]\",k:\"import from as\",c:[e.ASM,e.QSM]},{cN:\"class\",bK:\"class\",e:/[{;=]/,eE:!0,i:/[:\"\\[\\]]/,c:[{bK:\"extends\"},e.UTM]}],i:/#/}});hljs.registerLanguage(\"ini\",function(e){var c={cN:\"string\",c:[e.BE],v:[{b:\"'''\",e:\"'''\",r:10},{b:'\"\"\"',e:'\"\"\"',r:10},{b:'\"',e:'\"'},{b:\"'\",e:\"'\"}]};return{aliases:[\"toml\"],cI:!0,i:/\\S/,c:[e.C(\";\",\"$\"),e.HCM,{cN:\"title\",b:/^\\s*\\[+/,e:/\\]+/},{cN:\"setting\",b:/^[a-z0-9\\[\\]_-]+\\s*=\\s*/,e:\"$\",c:[{cN:\"value\",eW:!0,k:\"on off true false yes no\",c:[{cN:\"variable\",v:[{b:/\\$[\\w\\d\"][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},c,{cN:\"number\",b:/([\\+\\-]+)?[\\d]+_[\\d_]+/},e.NM],r:0}]}]}});hljs.registerLanguage(\"diff\",function(e){return{aliases:[\"patch\"],c:[{cN:\"chunk\",r:10,v:[{b:/^@@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +@@$/},{b:/^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/},{b:/^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$/}]},{cN:\"header\",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\\-\\-\\-/,e:/$/},{b:/^\\*{3} /,e:/$/},{b:/^\\+\\+\\+/,e:/$/},{b:/\\*{5}/,e:/\\*{5}$/}]},{cN:\"addition\",b:\"^\\\\+\",e:\"$\"},{cN:\"deletion\",b:\"^\\\\-\",e:\"$\"},{cN:\"change\",b:\"^\\\\!\",e:\"$\"}]}});\nexports.hljs = hljs;\n",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/highlight/highlight.js",
            "module-type": "library"
        },
        "$:/plugins/tiddlywiki/highlight/highlight.css": {
            "text": "/*\n\nOriginal style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #f0f0f0;\n  -webkit-text-size-adjust: none;\n}\n\n.hljs,\n.hljs-subst,\n.hljs-tag .hljs-title,\n.nginx .hljs-title {\n  color: black;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-constant,\n.hljs-parent,\n.hljs-tag .hljs-value,\n.hljs-rule .hljs-value,\n.hljs-preprocessor,\n.hljs-pragma,\n.hljs-name,\n.haml .hljs-symbol,\n.ruby .hljs-symbol,\n.ruby .hljs-symbol .hljs-string,\n.hljs-template_tag,\n.django .hljs-variable,\n.smalltalk .hljs-class,\n.hljs-addition,\n.hljs-flow,\n.hljs-stream,\n.bash .hljs-variable,\n.pf .hljs-variable,\n.apache .hljs-tag,\n.apache .hljs-cbracket,\n.tex .hljs-command,\n.tex .hljs-special,\n.erlang_repl .hljs-function_or_atom,\n.asciidoc .hljs-header,\n.markdown .hljs-header,\n.coffeescript .hljs-attribute,\n.tp .hljs-variable {\n  color: #800;\n}\n\n.smartquote,\n.hljs-comment,\n.hljs-annotation,\n.diff .hljs-header,\n.hljs-chunk,\n.asciidoc .hljs-blockquote,\n.markdown .hljs-blockquote {\n  color: #888;\n}\n\n.hljs-number,\n.hljs-date,\n.hljs-regexp,\n.hljs-literal,\n.hljs-hexcolor,\n.smalltalk .hljs-symbol,\n.smalltalk .hljs-char,\n.go .hljs-constant,\n.hljs-change,\n.lasso .hljs-variable,\n.makefile .hljs-variable,\n.asciidoc .hljs-bullet,\n.markdown .hljs-bullet,\n.asciidoc .hljs-link_url,\n.markdown .hljs-link_url {\n  color: #080;\n}\n\n.hljs-label,\n.ruby .hljs-string,\n.hljs-decorator,\n.hljs-filter .hljs-argument,\n.hljs-localvars,\n.hljs-array,\n.hljs-attr_selector,\n.hljs-important,\n.hljs-pseudo,\n.hljs-pi,\n.haml .hljs-bullet,\n.hljs-doctype,\n.hljs-deletion,\n.hljs-envvar,\n.hljs-shebang,\n.apache .hljs-sqbracket,\n.nginx .hljs-built_in,\n.tex .hljs-formula,\n.erlang_repl .hljs-reserved,\n.hljs-prompt,\n.asciidoc .hljs-link_label,\n.markdown .hljs-link_label,\n.vhdl .hljs-attribute,\n.clojure .hljs-attribute,\n.asciidoc .hljs-attribute,\n.lasso .hljs-attribute,\n.coffeescript .hljs-property,\n.hljs-phony {\n  color: #88f;\n}\n\n.hljs-keyword,\n.hljs-id,\n.hljs-title,\n.hljs-built_in,\n.css .hljs-tag,\n.hljs-doctag,\n.smalltalk .hljs-class,\n.hljs-winutils,\n.bash .hljs-variable,\n.pf .hljs-variable,\n.apache .hljs-tag,\n.hljs-type,\n.hljs-typename,\n.tex .hljs-command,\n.asciidoc .hljs-strong,\n.markdown .hljs-strong,\n.hljs-request,\n.hljs-status,\n.tp .hljs-data,\n.tp .hljs-io {\n  font-weight: bold;\n}\n\n.asciidoc .hljs-emphasis,\n.markdown .hljs-emphasis,\n.tp .hljs-units {\n  font-style: italic;\n}\n\n.nginx .hljs-built_in {\n  font-weight: normal;\n}\n\n.coffeescript .javascript,\n.javascript .xml,\n.lasso .markup,\n.tex .hljs-formula,\n.xml .javascript,\n.xml .vbscript,\n.xml .css,\n.xml .hljs-cdata {\n  opacity: 0.5;\n}\n",
            "type": "text/css",
            "title": "$:/plugins/tiddlywiki/highlight/highlight.css",
            "tags": "[[$:/tags/Stylesheet]]"
        },
        "$:/plugins/tiddlywiki/highlight/highlightblock.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/highlight/highlightblock.js\ntype: application/javascript\nmodule-type: widget\n\nWraps up the fenced code blocks parser for highlight and use in TiddlyWiki5\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TYPE_MAPPINGS_BASE = \"$:/config/HighlightPlugin/TypeMappings/\";\n\nvar CodeBlockWidget = require(\"$:/core/modules/widgets/codeblock.js\").codeblock;\n\nvar hljs = require(\"$:/plugins/tiddlywiki/highlight/highlight.js\");\n\nhljs.configure({tabReplace: \"    \"});\t\n\nCodeBlockWidget.prototype.postRender = function() {\n\tvar domNode = this.domNodes[0],\n\t\tlanguage = this.language,\n\t\ttiddler = this.wiki.getTiddler(TYPE_MAPPINGS_BASE + language);\n\tif(tiddler) {\n\t\tlanguage = tiddler.fields.text || \"\";\n\t}\n\tif(language && hljs.listLanguages().indexOf(language) !== -1) {\n\t\tdomNode.className = language.toLowerCase() + \" hljs\";\n\t\tif($tw.browser && !domNode.isTiddlyWikiFakeDom) {\n\t\t\thljs.highlightBlock(domNode);\t\t\t\n\t\t} else {\n\t\t\tvar text = domNode.textContent;\n\t\t\tdomNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(language,text).value);\n\t\t\t// If we're using the fakedom then specially save the original raw text\n\t\t\tif(domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tdomNode.children[0].textInnerHTML = text;\n\t\t\t}\n\t\t}\n\t}\t\n};\n\n})();\n",
            "title": "$:/plugins/tiddlywiki/highlight/highlightblock.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/tiddlywiki/highlight/license": {
            "title": "$:/plugins/tiddlywiki/highlight/license",
            "type": "text/plain",
            "text": "Copyright (c) 2006, Ivan Sagalaev\nAll rights reserved.\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n    * Neither the name of highlight.js nor the names of its contributors\n      may be used to endorse or promote products derived from this software\n      without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
        },
        "$:/plugins/tiddlywiki/highlight/readme": {
            "title": "$:/plugins/tiddlywiki/highlight/readme",
            "text": "This plugin provides syntax highlighting of code blocks using v8.8.0 of [[highlight.js|https://github.com/isagalaev/highlight.js]] from Ivan Sagalaev.\n\n! Usage\n\nWhen the plugin is installed it automatically applies highlighting to all codeblocks defined with triple backticks or with the CodeBlockWidget.\n\nThe language can optionally be specified after the opening triple braces:\n\n<$codeblock code=\"\"\"```css\n * { margin: 0; padding: 0; } /* micro reset */\n\nhtml { font-size: 62.5%; }\nbody { font-size: 14px; font-size: 1.4rem; } /* =14px */\nh1   { font-size: 24px; font-size: 2.4rem; } /* =24px */\n```\"\"\"/>\n\nIf no language is specified highlight.js will attempt to automatically detect the language.\n\n! Built-in Language Brushes\n\nThe plugin includes support for the following languages (referred to as \"brushes\" by highlight.js):\n\n* apache\n* bash\n* coffeescript\n* cpp\n* cs\n* css\n* diff\n* http\n* ini\n* java\n* javascript\n* json\n* makefile\n* markdown\n* nginx\n* objectivec\n* perl\n* php\n* python\n* ruby\n* sql\n* xml\n\nYou can also specify the language as a MIME content type (eg `text/html` or `text/css`). The mapping is accomplished via mapping tiddlers whose titles start with `$:/config/HighlightPlugin/TypeMappings/`.\n"
        },
        "$:/plugins/tiddlywiki/highlight/styles": {
            "title": "$:/plugins/tiddlywiki/highlight/styles",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": ".hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.hljs-comment,.diff .hljs-header,.hljs-javadoc{color:#998;font-style:italic}.hljs-keyword,.css .rule .hljs-keyword,.hljs-winutils,.nginx .hljs-title,.hljs-subst,.hljs-request,.hljs-status{color:#333;font-weight:bold}.hljs-number,.hljs-hexcolor,.ruby .hljs-constant{color:teal}.hljs-string,.hljs-tag .hljs-value,.hljs-phpdoc,.hljs-dartdoc,.tex .hljs-formula{color:#d14}.hljs-title,.hljs-id,.scss .hljs-preprocessor{color:#900;font-weight:bold}.hljs-list .hljs-keyword,.hljs-subst{font-weight:normal}.hljs-class .hljs-title,.hljs-type,.vhdl .hljs-literal,.tex .hljs-command{color:#458;font-weight:bold}.hljs-tag,.hljs-tag .hljs-title,.hljs-rule .hljs-property,.django .hljs-tag .hljs-keyword{color:navy;font-weight:normal}.hljs-attribute,.hljs-variable,.lisp .hljs-body,.hljs-name{color:teal}.hljs-regexp{color:#009926}.hljs-symbol,.ruby .hljs-symbol .hljs-string,.lisp .hljs-keyword,.clojure .hljs-keyword,.scheme .hljs-keyword,.tex .hljs-special,.hljs-prompt{color:#990073}.hljs-built_in{color:#0086b3}.hljs-preprocessor,.hljs-pragma,.hljs-pi,.hljs-doctype,.hljs-shebang,.hljs-cdata{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}"
        },
        "$:/plugins/tiddlywiki/highlight/usage": {
            "title": "$:/plugins/tiddlywiki/highlight/usage",
            "text": "! Usage\n\nFenced code blocks can have a language specifier added to trigger highlighting in a specific language. Otherwise heuristics are used to detect the language.\n\n```\n ```js\n var a = b + c; // Highlighted as JavaScript\n ```\n```\n! Adding Themes\n\nYou can add themes from highlight.js by copying the CSS to a new tiddler and tagging it with [[$:/tags/Stylesheet]]. The available themes can be found on GitHub:\n\nhttps://github.com/isagalaev/highlight.js/tree/master/src/styles\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/katex/katex.min.css": {
            "text": ".katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:\"\";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:\"\";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:\"\";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:\"\";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:\"\";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:\"\";display:block;margin-top:-1px}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right}",
            "type": "text/plain",
            "title": "$:/plugins/tiddlywiki/katex/katex.min.css"
        },
        "$:/plugins/tiddlywiki/katex/katex.min.js": {
            "text": "(function(document) {\n(function(e){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=e()}else if(typeof define===\"function\"&&define.amd){define([],e)}else{var t;if(typeof window!==\"undefined\"){t=window}else if(typeof global!==\"undefined\"){t=global}else if(typeof self!==\"undefined\"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function a(e,t,r){function i(s,l){if(!t[s]){if(!e[s]){var o=typeof require==\"function\"&&require;if(!l&&o)return o(s,!0);if(n)return n(s,!0);var u=new Error(\"Cannot find module '\"+s+\"'\");throw u.code=\"MODULE_NOT_FOUND\",u}var p=t[s]={exports:{}};e[s][0].call(p.exports,function(t){var r=e[s][1][t];return i(r?r:t)},p,p.exports,a,e,t,r)}return t[s].exports}var n=typeof require==\"function\"&&require;for(var s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,r){var a=e(\"./src/ParseError\");var i=e(\"./src/Settings\");var n=e(\"./src/buildTree\");var s=e(\"./src/parseTree\");var l=e(\"./src/utils\");var o=function(e,t,r){l.clearNode(t);var a=new i(r);var o=s(e,a);var u=n(o,e,a).toNode();t.appendChild(u)};if(typeof document!==\"undefined\"){if(document.compatMode!==\"CSS1Compat\"){typeof console!==\"undefined\"&&console.warn(\"Warning: KaTeX doesn't work in quirks mode. Make sure your \"+\"website has a suitable doctype.\");o=function(){throw new a(\"KaTeX doesn't work in quirks mode.\")}}}var u=function(e,t){var r=new i(t);var a=s(e,r);return n(a,e,r).toMarkup()};var p=function(e,t){var r=new i(t);return s(e,r)};t.exports={render:o,renderToString:u,__parse:p,ParseError:a}},{\"./src/ParseError\":6,\"./src/Settings\":8,\"./src/buildTree\":13,\"./src/parseTree\":22,\"./src/utils\":25}],2:[function(e,t,r){\"use strict\";function a(e){if(!e.__matchAtRelocatable){var t=e.source+\"|()\";var r=\"g\"+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.unicode?\"u\":\"\");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function i(e,t,r){if(e.global||e.sticky){throw new Error(\"matchAt(...): Only non-global regexes are supported\")}var i=a(e);i.lastIndex=r;var n=i.exec(t);if(n[n.length-1]==null){n.length=n.length-1;return n}else{return null}}t.exports=i},{}],3:[function(e,t,r){var a=e(\"match-at\");var i=e(\"./ParseError\");function n(e){this.input=e;this.pos=0}function s(e,t,r,a){this.text=e;this.start=t;this.end=r;this.lexer=a}s.prototype.range=function(e,t){if(e.lexer!==this.lexer){return new s(t)}return new s(t,this.start,e.end,this.lexer)};var l=new RegExp(\"([ \\r\\n\t]+)|\"+\"([!-\\\\[\\\\]-\\u2027\\u202a-\\ud7ff\\uf900-\\uffff]\"+\"|[\\ud800-\\udbff][\\udc00-\\udfff]\"+\"|\\\\\\\\(?:[a-zA-Z]+|[^\\ud800-\\udfff])\"+\")\");n.prototype.lex=function(){var e=this.input;var t=this.pos;if(t===e.length){return new s(\"EOF\",t,t,this)}var r=a(l,e,t);if(r===null){throw new i(\"Unexpected character: '\"+e[t]+\"'\",new s(e[t],t,t+1,this))}var n=r[2]||\" \";var o=this.pos;this.pos+=r[0].length;var u=this.pos;return new s(n,o,u,this)};t.exports=n},{\"./ParseError\":6,\"match-at\":2}],4:[function(e,t,r){var a=e(\"./Lexer\");function i(e,t){this.lexer=new a(e);this.macros=t;this.stack=[];this.discardedWhiteSpace=[]}i.prototype.nextToken=function(){for(;;){if(this.stack.length===0){this.stack.push(this.lexer.lex())}var e=this.stack.pop();var t=e.text;if(!(t.charAt(0)===\"\\\\\"&&this.macros.hasOwnProperty(t))){return e}var r=this.macros[t];if(typeof r===\"string\"){var i=new a(r);r=[];var n=i.lex();while(n.text!==\"EOF\"){r.push(n);n=i.lex()}r.reverse();this.macros[t]=r}this.stack=this.stack.concat(r)}};i.prototype.get=function(e){this.discardedWhiteSpace=[];var t=this.nextToken();if(e){while(t.text===\" \"){this.discardedWhiteSpace.push(t);t=this.nextToken()}}return t};i.prototype.unget=function(e){this.stack.push(e);while(this.discardedWhiteSpace.length!==0){this.stack.push(this.discardedWhiteSpace.pop())}};t.exports=i},{\"./Lexer\":3}],5:[function(e,t,r){function a(e){this.style=e.style;this.color=e.color;this.size=e.size;this.phantom=e.phantom;this.font=e.font;if(e.parentStyle===undefined){this.parentStyle=e.style}else{this.parentStyle=e.parentStyle}if(e.parentSize===undefined){this.parentSize=e.size}else{this.parentSize=e.parentSize}}a.prototype.extend=function(e){var t={style:this.style,size:this.size,color:this.color,parentStyle:this.style,parentSize:this.size,phantom:this.phantom,font:this.font};for(var r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return new a(t)};a.prototype.withStyle=function(e){return this.extend({style:e})};a.prototype.withSize=function(e){return this.extend({size:e})};a.prototype.withColor=function(e){return this.extend({color:e})};a.prototype.withPhantom=function(){return this.extend({phantom:true})};a.prototype.withFont=function(e){return this.extend({font:e||this.font})};a.prototype.reset=function(){return this.extend({})};var i={\"katex-blue\":\"#6495ed\",\"katex-orange\":\"#ffa500\",\"katex-pink\":\"#ff00af\",\"katex-red\":\"#df0030\",\"katex-green\":\"#28ae7b\",\"katex-gray\":\"gray\",\"katex-purple\":\"#9d38bd\",\"katex-blueA\":\"#ccfaff\",\"katex-blueB\":\"#80f6ff\",\"katex-blueC\":\"#63d9ea\",\"katex-blueD\":\"#11accd\",\"katex-blueE\":\"#0c7f99\",\"katex-tealA\":\"#94fff5\",\"katex-tealB\":\"#26edd5\",\"katex-tealC\":\"#01d1c1\",\"katex-tealD\":\"#01a995\",\"katex-tealE\":\"#208170\",\"katex-greenA\":\"#b6ffb0\",\"katex-greenB\":\"#8af281\",\"katex-greenC\":\"#74cf70\",\"katex-greenD\":\"#1fab54\",\"katex-greenE\":\"#0d923f\",\"katex-goldA\":\"#ffd0a9\",\"katex-goldB\":\"#ffbb71\",\"katex-goldC\":\"#ff9c39\",\"katex-goldD\":\"#e07d10\",\"katex-goldE\":\"#a75a05\",\"katex-redA\":\"#fca9a9\",\"katex-redB\":\"#ff8482\",\"katex-redC\":\"#f9685d\",\"katex-redD\":\"#e84d39\",\"katex-redE\":\"#bc2612\",\"katex-maroonA\":\"#ffbde0\",\"katex-maroonB\":\"#ff92c6\",\"katex-maroonC\":\"#ed5fa6\",\"katex-maroonD\":\"#ca337c\",\"katex-maroonE\":\"#9e034e\",\"katex-purpleA\":\"#ddd7ff\",\"katex-purpleB\":\"#c6b9fc\",\"katex-purpleC\":\"#aa87ff\",\"katex-purpleD\":\"#7854ab\",\"katex-purpleE\":\"#543b78\",\"katex-mintA\":\"#f5f9e8\",\"katex-mintB\":\"#edf2df\",\"katex-mintC\":\"#e0e5cc\",\"katex-grayA\":\"#f6f7f7\",\"katex-grayB\":\"#f0f1f2\",\"katex-grayC\":\"#e3e5e6\",\"katex-grayD\":\"#d6d8da\",\"katex-grayE\":\"#babec2\",\"katex-grayF\":\"#888d93\",\"katex-grayG\":\"#626569\",\"katex-grayH\":\"#3b3e40\",\"katex-grayI\":\"#21242c\",\"katex-kaBlue\":\"#314453\",\"katex-kaGreen\":\"#71B307\"};a.prototype.getColor=function(){if(this.phantom){return\"transparent\"}else{return i[this.color]||this.color}};t.exports=a},{}],6:[function(e,t,r){function a(e,t){var r=\"KaTeX parse error: \"+e;var i;var n;if(t&&t.lexer&&t.start<=t.end){var s=t.lexer.input;i=t.start;n=t.end;if(i===s.length){r+=\" at end of input: \"}else{r+=\" at position \"+(i+1)+\": \"}var l=s.slice(i,n).replace(/[^]/g,\"$&\\u0332\");var o;if(i>15){o=\"\\u2026\"+s.slice(i-15,i)}else{o=s.slice(0,i)}var u;if(n+15<s.length){u=s.slice(n,n+15)+\"\\u2026\"}else{u=s.slice(n)}r+=o+l+u}var p=new Error(r);p.name=\"ParseError\";p.__proto__=a.prototype;p.position=i;return p}a.prototype.__proto__=Error.prototype;t.exports=a},{}],7:[function(e,t,r){var a=e(\"./functions\");var i=e(\"./environments\");var n=e(\"./MacroExpander\");var s=e(\"./symbols\");var l=e(\"./utils\");var o=e(\"./unicodeRegexes\").cjkRegex;var u=e(\"./parseData\");var p=e(\"./ParseError\");function h(e,t){this.gullet=new n(e,t.macros);this.settings=t;this.leftrightDepth=0}var c=u.ParseNode;function m(e,t,r){this.result=e;this.isFunction=t;this.token=r}h.prototype.expect=function(e,t){if(this.nextToken.text!==e){throw new p(\"Expected '\"+e+\"', got '\"+this.nextToken.text+\"'\",this.nextToken)}if(t!==false){this.consume()}};h.prototype.consume=function(){this.nextToken=this.gullet.get(this.mode===\"math\")};h.prototype.switchMode=function(e){this.gullet.unget(this.nextToken);this.mode=e;this.consume()};h.prototype.parse=function(){this.mode=\"math\";this.consume();var e=this.parseInput();return e};h.prototype.parseInput=function(){var e=this.parseExpression(false);this.expect(\"EOF\",false);return e};var f=[\"}\",\"\\\\end\",\"\\\\right\",\"&\",\"\\\\\\\\\",\"\\\\cr\"];h.prototype.parseExpression=function(e,t){var r=[];while(true){var i=this.nextToken;if(f.indexOf(i.text)!==-1){break}if(t&&i.text===t){break}if(e&&a[i.text]&&a[i.text].infix){break}var n=this.parseAtom();if(!n){if(!this.settings.throwOnError&&i.text[0]===\"\\\\\"){var s=this.handleUnsupportedCmd();r.push(s);continue}break}r.push(n)}return this.handleInfixNodes(r)};h.prototype.handleInfixNodes=function(e){var t=-1;var r;for(var a=0;a<e.length;a++){var i=e[a];if(i.type===\"infix\"){if(t!==-1){throw new p(\"only one infix operator per group\",i.value.token)}t=a;r=i.value.replaceWith}}if(t!==-1){var n;var s;var l=e.slice(0,t);var o=e.slice(t+1);if(l.length===1&&l[0].type===\"ordgroup\"){n=l[0]}else{n=new c(\"ordgroup\",l,this.mode)}if(o.length===1&&o[0].type===\"ordgroup\"){s=o[0]}else{s=new c(\"ordgroup\",o,this.mode)}var u=this.callFunction(r,[n,s],null);return[new c(u.type,u,this.mode)]}else{return e}};var v=1;h.prototype.handleSupSubscript=function(e){var t=this.nextToken;var r=t.text;this.consume();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]===\"\\\\\"){return this.handleUnsupportedCmd()}else{throw new p(\"Expected group after '\"+r+\"'\",t)}}else if(i.isFunction){var n=a[i.result].greediness;if(n>v){return this.parseFunction(i)}else{throw new p(\"Got function '\"+i.result+\"' with no arguments \"+\"as \"+e,t)}}else{return i.result}};h.prototype.handleUnsupportedCmd=function(){var e=this.nextToken.text;var t=[];for(var r=0;r<e.length;r++){t.push(new c(\"textord\",e[r],\"text\"))}var a=new c(\"text\",{body:t,type:\"text\"},this.mode);var i=new c(\"color\",{color:this.settings.errorColor,value:[a],type:\"color\"},this.mode);this.consume();return i};h.prototype.parseAtom=function(){var e=this.parseImplicitGroup();if(this.mode===\"text\"){return e}var t;var r;while(true){var a=this.nextToken;if(a.text===\"\\\\limits\"||a.text===\"\\\\nolimits\"){if(!e||e.type!==\"op\"){throw new p(\"Limit controls must follow a math operator\",a)}else{var i=a.text===\"\\\\limits\";e.value.limits=i;e.value.alwaysHandleSupSub=true}this.consume()}else if(a.text===\"^\"){if(t){throw new p(\"Double superscript\",a)}t=this.handleSupSubscript(\"superscript\")}else if(a.text===\"_\"){if(r){throw new p(\"Double subscript\",a)}r=this.handleSupSubscript(\"subscript\")}else if(a.text===\"'\"){var n=new c(\"textord\",\"\\\\prime\",this.mode);var s=[n];this.consume();while(this.nextToken.text===\"'\"){s.push(n);this.consume()}t=new c(\"ordgroup\",s,this.mode)}else{break}}if(t||r){return new c(\"supsub\",{base:e,sup:t,sub:r},this.mode)}else{return e}};var d=[\"\\\\tiny\",\"\\\\scriptsize\",\"\\\\footnotesize\",\"\\\\small\",\"\\\\normalsize\",\"\\\\large\",\"\\\\Large\",\"\\\\LARGE\",\"\\\\huge\",\"\\\\Huge\"];var g=[\"\\\\displaystyle\",\"\\\\textstyle\",\"\\\\scriptstyle\",\"\\\\scriptscriptstyle\"];h.prototype.parseImplicitGroup=function(){var e=this.parseSymbol();if(e==null){return this.parseFunction()}var t=e.result;var r;if(t===\"\\\\left\"){var a=this.parseFunction(e);++this.leftrightDepth;r=this.parseExpression(false);--this.leftrightDepth;this.expect(\"\\\\right\",false);var n=this.parseFunction();return new c(\"leftright\",{body:r,left:a.value.value,right:n.value.value},this.mode)}else if(t===\"\\\\begin\"){var s=this.parseFunction(e);var o=s.value.name;if(!i.hasOwnProperty(o)){throw new p(\"No such environment: \"+o,s.value.nameGroup)}var u=i[o];var h=this.parseArguments(\"\\\\begin{\"+o+\"}\",u);var m={mode:this.mode,envName:o,parser:this,positions:h.pop()};var f=u.handler(m,h);this.expect(\"\\\\end\",false);var v=this.nextToken;var y=this.parseFunction();if(y.value.name!==o){throw new p(\"Mismatch: \\\\begin{\"+o+\"} matched \"+\"by \\\\end{\"+y.value.name+\"}\",v)}f.position=y.position;return f}else if(l.contains(d,t)){r=this.parseExpression(false);return new c(\"sizing\",{size:\"size\"+(l.indexOf(d,t)+1),value:r},this.mode)}else if(l.contains(g,t)){r=this.parseExpression(true);return new c(\"styling\",{style:t.slice(1,t.length-5),value:r},this.mode)}else{return this.parseFunction(e)}};h.prototype.parseFunction=function(e){if(!e){e=this.parseGroup()}if(e){if(e.isFunction){var t=e.result;var r=a[t];if(this.mode===\"text\"&&!r.allowedInText){throw new p(\"Can't use function '\"+t+\"' in text mode\",e.token)}var i=this.parseArguments(t,r);var n=e.token;var s=this.callFunction(t,i,i.pop(),n);return new c(s.type,s,this.mode)}else{return e.result}}else{return null}};h.prototype.callFunction=function(e,t,r,i){var n={funcName:e,parser:this,positions:r,token:i};return a[e].handler(n,t)};h.prototype.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(r===0){return[[this.pos]]}var i=t.greediness;var n=[this.pos];var s=[];for(var l=0;l<r;l++){var o=this.nextToken;var u=t.argTypes&&t.argTypes[l];var h;if(l<t.numOptionalArgs){if(u){h=this.parseGroupOfType(u,true)}else{h=this.parseGroup(true)}if(!h){s.push(null);n.push(this.pos);continue}}else{if(u){h=this.parseGroupOfType(u)}else{h=this.parseGroup()}if(!h){if(!this.settings.throwOnError&&this.nextToken.text[0]===\"\\\\\"){h=new m(this.handleUnsupportedCmd(this.nextToken.text),false)}else{throw new p(\"Expected group after '\"+e+\"'\",o)}}}var c;if(h.isFunction){var f=a[h.result].greediness;if(f>i){c=this.parseFunction(h)}else{throw new p(\"Got function '\"+h.result+\"' as \"+\"argument to '\"+e+\"'\",o)}}else{c=h.result}s.push(c);n.push(this.pos)}s.push(n);return s};h.prototype.parseGroupOfType=function(e,t){var r=this.mode;if(e===\"original\"){e=r}if(e===\"color\"){return this.parseColorGroup(t)}if(e===\"size\"){return this.parseSizeGroup(t)}this.switchMode(e);if(e===\"text\"){while(this.nextToken.text===\" \"){this.consume()}}var a=this.parseGroup(t);this.switchMode(r);return a};h.prototype.parseStringGroup=function(e,t){if(t&&this.nextToken.text!==\"[\"){return null}var r=this.mode;this.mode=\"text\";this.expect(t?\"[\":\"{\");var a=\"\";var i=this.nextToken;var n=i;while(this.nextToken.text!==(t?\"]\":\"}\")){if(this.nextToken.text===\"EOF\"){throw new p(\"Unexpected end of input in \"+e,i.range(this.nextToken,a))}n=this.nextToken;a+=n.text;this.consume()}this.mode=r;this.expect(t?\"]\":\"}\");return i.range(n,a)};h.prototype.parseRegexGroup=function(e,t){var r=this.mode;this.mode=\"text\";var a=this.nextToken;var i=a;var n=\"\";while(this.nextToken.text!==\"EOF\"&&e.test(n+this.nextToken.text)){i=this.nextToken;n+=i.text;this.consume()}if(n===\"\"){throw new p(\"Invalid \"+t+\": '\"+a.text+\"'\",a)}this.mode=r;return a.range(i,n)};h.prototype.parseColorGroup=function(e){var t=this.parseStringGroup(\"color\",e);if(!t){return null}var r=/^(#[a-z0-9]+|[a-z]+)$/i.exec(t.text);if(!r){throw new p(\"Invalid color: '\"+t.text+\"'\",t)}return new m(new c(\"color\",r[0],this.mode),false)};h.prototype.parseSizeGroup=function(e){var t;if(!e&&this.nextToken.text!==\"{\"){t=this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2}$/,\"size\")}else{t=this.parseStringGroup(\"size\",e)}if(!t){return null}var r=/([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(t.text);if(!r){throw new p(\"Invalid size: '\"+t.text+\"'\",t)}var a={number:+(r[1]+r[2]),unit:r[3]};if(a.unit!==\"em\"&&a.unit!==\"ex\"&&a.unit!==\"mu\"){throw new p(\"Invalid unit: '\"+a.unit+\"'\",t)}return new m(new c(\"color\",a,this.mode),false)};h.prototype.parseGroup=function(e){var t=this.nextToken;if(this.nextToken.text===(e?\"[\":\"{\")){this.consume();var r=this.parseExpression(false,e?\"]\":null);var a=this.nextToken;this.expect(e?\"]\":\"}\");if(this.mode===\"text\"){this.formLigatures(r)}return new m(new c(\"ordgroup\",r,this.mode,t,a),false)}else{return e?null:this.parseSymbol()}};h.prototype.formLigatures=function(e){var t;var r=e.length-1;for(t=0;t<r;++t){var a=e[t];var i=a.value;if(i===\"-\"&&e[t+1].value===\"-\"){if(t+1<r&&e[t+2].value===\"-\"){e.splice(t,3,new c(\"textord\",\"---\",\"text\",a,e[t+2]));r-=2}else{e.splice(t,2,new c(\"textord\",\"--\",\"text\",a,e[t+1]));r-=1}}if((i===\"'\"||i===\"`\")&&e[t+1].value===i){e.splice(t,2,new c(\"textord\",i+i,\"text\",a,e[t+1]));r-=1}}};h.prototype.parseSymbol=function(){var e=this.nextToken;if(a[e.text]){this.consume();return new m(e.text,true,e)}else if(s[this.mode][e.text]){this.consume();return new m(new c(s[this.mode][e.text].group,e.text,this.mode,e),false,e)}else if(this.mode===\"text\"&&o.test(e.text)){this.consume();return new m(new c(\"textord\",e.text,this.mode,e),false,e)}else{return null}};h.prototype.ParseNode=c;t.exports=h},{\"./MacroExpander\":4,\"./ParseError\":6,\"./environments\":16,\"./functions\":19,\"./parseData\":21,\"./symbols\":23,\"./unicodeRegexes\":24,\"./utils\":25}],8:[function(e,t,r){function a(e,t){return e===undefined?t:e}function i(e){e=e||{};this.displayMode=a(e.displayMode,false);this.throwOnError=a(e.throwOnError,true);this.errorColor=a(e.errorColor,\"#cc0000\");this.macros=e.macros||{}}t.exports=i},{}],9:[function(e,t,r){var a=e(\"./fontMetrics.js\").sigmas;var i=[{},{},{}];var n;for(var s in a){if(a.hasOwnProperty(s)){for(n=0;n<3;n++){i[n][s]=a[s][n]}}}for(n=0;n<3;n++){i[n].emPerEx=a.xHeight[n]/a.quad[n]}function l(e,t,r,a){this.id=e;this.size=t;this.cramped=a;this.sizeMultiplier=r;this.metrics=i[t>0?t-1:0]}l.prototype.sup=function(){return y[x[this.id]]};l.prototype.sub=function(){return y[b[this.id]]};l.prototype.fracNum=function(){return y[w[this.id]]};l.prototype.fracDen=function(){return y[k[this.id]]};l.prototype.cramp=function(){return y[z[this.id]]};l.prototype.cls=function(){return d[this.size]+(this.cramped?\" cramped\":\" uncramped\")};l.prototype.reset=function(){return g[this.size]};l.prototype.isTight=function(){return this.size>=2};var o=0;var u=1;var p=2;var h=3;var c=4;var m=5;var f=6;var v=7;var d=[\"displaystyle textstyle\",\"textstyle\",\"scriptstyle\",\"scriptscriptstyle\"];var g=[\"reset-textstyle\",\"reset-textstyle\",\"reset-scriptstyle\",\"reset-scriptscriptstyle\"];var y=[new l(o,0,1,false),new l(u,0,1,true),new l(p,1,1,false),new l(h,1,1,true),new l(c,2,.7,false),new l(m,2,.7,true),new l(f,3,.5,false),new l(v,3,.5,true)];var x=[c,m,c,m,f,v,f,v];var b=[m,m,m,m,v,v,v,v];var w=[p,h,c,m,f,v,f,v];var k=[h,h,m,m,v,v,v,v];var z=[u,u,h,h,m,m,v,v];t.exports={DISPLAY:y[o],TEXT:y[p],SCRIPT:y[c],SCRIPTSCRIPT:y[f]}},{\"./fontMetrics.js\":17}],10:[function(e,t,r){var a=e(\"./domTree\");var i=e(\"./fontMetrics\");var n=e(\"./symbols\");var s=e(\"./utils\");var l=[\"\\\\Gamma\",\"\\\\Delta\",\"\\\\Theta\",\"\\\\Lambda\",\"\\\\Xi\",\"\\\\Pi\",\"\\\\Sigma\",\"\\\\Upsilon\",\"\\\\Phi\",\"\\\\Psi\",\"\\\\Omega\"];var o=[\"\\u0131\",\"\\u0237\",\"\\xa3\"];var u=function(e,t,r,s,l){if(n[r][e]&&n[r][e].replace){e=n[r][e].replace}var o=i.getCharacterMetrics(e,t);var u;if(o){var p=o.italic;if(r===\"text\"){p=0}u=new a.symbolNode(e,o.height,o.depth,p,o.skew,l)}else{typeof console!==\"undefined\"&&console.warn(\"No character metrics for '\"+e+\"' in style '\"+t+\"'\");u=new a.symbolNode(e,0,0,0,0,l)}if(s){if(s.style.isTight()){u.classes.push(\"mtight\")}if(s.getColor()){u.style.color=s.getColor()}}return u};var p=function(e,t,r,a){if(e===\"\\\\\"||n[t][e].font===\"main\"){return u(e,\"Main-Regular\",t,r,a)}else{return u(e,\"AMS-Regular\",t,r,a.concat([\"amsrm\"]))}};var h=function(e,t,r,a,i){if(i===\"mathord\"){return c(e,t,r,a)}else if(i===\"textord\"){return u(e,\"Main-Regular\",t,r,a.concat([\"mathrm\"]))}else{throw new Error(\"unexpected type: \"+i+\" in mathDefault\")}};var c=function(e,t,r,a){if(/[0-9]/.test(e.charAt(0))||s.contains(o,e)||s.contains(l,e)){return u(e,\"Main-Italic\",t,r,a.concat([\"mainit\"]))}else{return u(e,\"Math-Italic\",t,r,a.concat([\"mathit\"]))}};var m=function(e,t,r){var a=e.mode;var l=e.value;if(n[a][l]&&n[a][l].replace){l=n[a][l].replace}var p=[\"mord\"];var m=t.font;if(m){if(m===\"mathit\"||s.contains(o,l)){return c(l,a,t,p)}else{var f=k[m].fontName;if(i.getCharacterMetrics(l,f)){return u(l,f,a,t,p.concat([m]))}else{return h(l,a,t,p,r)}}}else{return h(l,a,t,p,r)}};var f=function(e){var t=0;var r=0;var a=0;if(e.children){for(var i=0;i<e.children.length;i++){if(e.children[i].height>t){t=e.children[i].height}if(e.children[i].depth>r){r=e.children[i].depth}if(e.children[i].maxFontSize>a){a=e.children[i].maxFontSize}}}e.height=t;e.depth=r;e.maxFontSize=a};var v=function(e,t,r){var i=new a.span(e,t,r);f(i);return i};var d=function(e,t){e.children=t.concat(e.children);f(e)};var g=function(e){var t=new a.documentFragment(e);f(t);return t};var y=function(e,t){var r=v([],[new a.symbolNode(\"\\u200b\")]);r.style.fontSize=t/e.style.sizeMultiplier+\"em\";var i=v([\"fontsize-ensurer\",\"reset-\"+e.size,\"size5\"],[r]);return i};var x=function(e,t,r,i){var n;var s;var l;if(t===\"individualShift\"){var o=e;e=[o[0]];n=-o[0].shift-o[0].elem.depth;s=n;for(l=1;l<o.length;l++){var u=-o[l].shift-s-o[l].elem.depth;var p=u-(o[l-1].elem.height+o[l-1].elem.depth);s=s+u;e.push({type:\"kern\",size:p});e.push(o[l])}}else if(t===\"top\"){var h=r;for(l=0;l<e.length;l++){if(e[l].type===\"kern\"){h-=e[l].size}else{h-=e[l].elem.height+e[l].elem.depth}}n=h}else if(t===\"bottom\"){n=-r}else if(t===\"shift\"){n=-e[0].elem.depth-r}else if(t===\"firstBaseline\"){n=-e[0].elem.depth}else{n=0}var c=0;for(l=0;l<e.length;l++){if(e[l].type===\"elem\"){c=Math.max(c,e[l].elem.maxFontSize)}}var m=y(i,c);var f=[];s=n;for(l=0;l<e.length;l++){if(e[l].type===\"kern\"){s+=e[l].size}else{var d=e[l].elem;var g=-d.depth-s;s+=d.height+d.depth;var x=v([],[m,d]);x.height-=g;x.depth+=g;x.style.top=g+\"em\";f.push(x)}}var b=v([\"baseline-fix\"],[m,new a.symbolNode(\"\\u200b\")]);f.push(b);var w=v([\"vlist\"],f);w.height=Math.max(s,w.height);w.depth=Math.max(-n,w.depth);return w};var b={size1:.5,size2:.7,size3:.8,size4:.9,size5:1,size6:1.2,size7:1.44,size8:1.73,size9:2.07,size10:2.49};var w={\"\\\\qquad\":{size:\"2em\",className:\"qquad\"},\"\\\\quad\":{size:\"1em\",className:\"quad\"},\"\\\\enspace\":{size:\"0.5em\",className:\"enspace\"},\"\\\\;\":{size:\"0.277778em\",className:\"thickspace\"},\"\\\\:\":{size:\"0.22222em\",className:\"mediumspace\"},\"\\\\,\":{size:\"0.16667em\",className:\"thinspace\"},\"\\\\!\":{size:\"-0.16667em\",className:\"negativethinspace\"}};var k={mathbf:{variant:\"bold\",fontName:\"Main-Bold\"},mathrm:{variant:\"normal\",fontName:\"Main-Regular\"},textit:{variant:\"italic\",fontName:\"Main-Italic\"},mathbb:{variant:\"double-struck\",fontName:\"AMS-Regular\"},mathcal:{variant:\"script\",fontName:\"Caligraphic-Regular\"},mathfrak:{variant:\"fraktur\",fontName:\"Fraktur-Regular\"},mathscr:{variant:\"script\",fontName:\"Script-Regular\"},mathsf:{variant:\"sans-serif\",fontName:\"SansSerif-Regular\"},mathtt:{variant:\"monospace\",fontName:\"Typewriter-Regular\"}};t.exports={fontMap:k,makeSymbol:u,mathsym:p,makeSpan:v,makeFragment:g,makeVList:x,makeOrd:m,prependChildren:d,sizingMultiplier:b,spacingFunctions:w}},{\"./domTree\":15,\"./fontMetrics\":17,\"./symbols\":23,\"./utils\":25}],11:[function(e,t,r){var a=e(\"./ParseError\");var i=e(\"./Style\");var n=e(\"./buildCommon\");var s=e(\"./delimiter\");var l=e(\"./domTree\");var o=e(\"./fontMetrics\");var u=e(\"./utils\");var p=n.makeSpan;var h=function(e){return e instanceof l.span&&e.classes[0]===\"mspace\"};var c=function(e){return e&&e.classes[0]===\"mbin\"};var m=function(e,t){if(e){return u.contains([\"mbin\",\"mopen\",\"mrel\",\"mop\",\"mpunct\"],e.classes[0])}else{return t}};var f=function(e,t){if(e){return u.contains([\"mrel\",\"mclose\",\"mpunct\"],e.classes[0])}else{return t}};var v=function(e,t,r){var a=[];for(var i=0;i<e.length;i++){var s=e[i];var o=z(s,t);if(o instanceof l.documentFragment){Array.prototype.push.apply(a,o.children)}else{a.push(o)}}var u=null;for(i=0;i<a.length;i++){if(h(a[i])){u=u||[];u.push(a[i]);a.splice(i,1);i--}else if(u){if(a[i]instanceof l.symbolNode){a[i]=p([].concat(a[i].classes),[a[i]])}n.prependChildren(a[i],u);u=null}}if(u){Array.prototype.push.apply(a,u)}for(i=0;i<a.length;i++){if(c(a[i])&&(m(a[i-1],r)||f(a[i+1],r))){a[i].classes[0]=\"mord\"}}return a};var d=function(e){if(e instanceof l.documentFragment){if(e.children.length){return d(e.children[e.children.length-1])}}else{if(u.contains([\"mord\",\"mop\",\"mbin\",\"mrel\",\"mopen\",\"mclose\",\"mpunct\",\"minner\"],e.classes[0])){return e.classes[0]}}return null};var g=function(e,t){if(!e){return false}else if(e.type===\"op\"){return e.value.limits&&(t.style.size===i.DISPLAY.size||e.value.alwaysHandleSupSub)}else if(e.type===\"accent\"){return x(e.value.base)}else{return null}};var y=function(e){if(!e){return false}else if(e.type===\"ordgroup\"){if(e.value.length===1){return y(e.value[0])}else{return e}}else if(e.type===\"color\"){if(e.value.value.length===1){return y(e.value.value[0])}else{return e}}else if(e.type===\"font\"){return y(e.value.body)}else{return e}};var x=function(e){var t=y(e);return t.type===\"mathord\"||t.type===\"textord\"||t.type===\"bin\"||t.type===\"rel\"||t.type===\"inner\"||t.type===\"open\"||t.type===\"close\"||t.type===\"punct\"};var b=function(e,t){return p(t.concat([\"sizing\",\"reset-\"+e.size,\"size5\",e.style.reset(),i.TEXT.cls(),\"nulldelimiter\"]))};var w={};w.mathord=function(e,t){return n.makeOrd(e,t,\"mathord\")};w.textord=function(e,t){return n.makeOrd(e,t,\"textord\")};w.bin=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mbin\"])};w.rel=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mrel\"])};w.open=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mopen\"])};w.close=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mclose\"])};w.inner=function(e,t){return n.mathsym(e.value,e.mode,t,[\"minner\"])};w.punct=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mpunct\"])};w.ordgroup=function(e,t){return p([\"mord\",t.style.cls()],v(e.value,t.reset(),true),t)};w.text=function(e,t){var r=t.withFont(e.value.style);var a=v(e.value.body,r,true);for(var i=0;i<a.length-1;i++){if(a[i].tryCombine(a[i+1])){a.splice(i+1,1);i--}}return p([\"mord\",\"text\",r.style.cls()],a,r)};w.color=function(e,t){var r=v(e.value.value,t.withColor(e.value.color),false);return new n.makeFragment(r)};w.supsub=function(e,t){if(g(e.value.base,t)){return w[e.value.base.type](e,t)}var r=z(e.value.base,t.reset());var a;var s;var u;var h;var c=t.style;var m;if(e.value.sup){m=t.withStyle(c.sup());u=z(e.value.sup,m);a=p([c.reset(),c.sup().cls()],[u],m)}if(e.value.sub){m=t.withStyle(c.sub());h=z(e.value.sub,m);s=p([c.reset(),c.sub().cls()],[h],m)}var f;var v;if(x(e.value.base)){f=0;v=0}else{f=r.height-c.metrics.supDrop;v=r.depth+c.metrics.subDrop}var y;if(c===i.DISPLAY){y=c.metrics.sup1}else if(c.cramped){y=c.metrics.sup3}else{y=c.metrics.sup2}var b=i.TEXT.sizeMultiplier*c.sizeMultiplier;var k=.5/o.metrics.ptPerEm/b+\"em\";var S;if(!e.value.sup){v=Math.max(v,c.metrics.sub1,h.height-.8*c.metrics.xHeight);S=n.makeVList([{type:\"elem\",elem:s}],\"shift\",v,t);S.children[0].style.marginRight=k;if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+\"em\"}}else if(!e.value.sub){f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);S=n.makeVList([{type:\"elem\",elem:a}],\"shift\",-f,t);S.children[0].style.marginRight=k}else{f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);v=Math.max(v,c.metrics.sub2);var M=o.metrics.defaultRuleThickness;if(f-u.depth-(h.height-v)<4*M){v=4*M-(f-u.depth)+h.height;var T=.8*c.metrics.xHeight-(f-u.depth);if(T>0){f+=T;v-=T}}S=n.makeVList([{type:\"elem\",elem:s,shift:v},{type:\"elem\",elem:a,shift:-f}],\"individualShift\",null,t);if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+\"em\"}S.children[0].style.marginRight=k;S.children[1].style.marginRight=k}var A=d(r)||\"mord\";return p([A],[r,p([\"msupsub\"],[S])],t)};w.genfrac=function(e,t){var r=t.style;if(e.value.size===\"display\"){r=i.DISPLAY}else if(e.value.size===\"text\"){r=i.TEXT}var a=r.fracNum();var l=r.fracDen();var u;u=t.withStyle(a);var h=z(e.value.numer,u);var c=p([r.reset(),a.cls()],[h],u);u=t.withStyle(l);var m=z(e.value.denom,u);var f=p([r.reset(),l.cls()],[m],u);var v;if(e.value.hasBarLine){v=o.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{v=0}var d;var g;var y;if(r.size===i.DISPLAY.size){d=r.metrics.num1;if(v>0){g=3*v}else{g=7*o.metrics.defaultRuleThickness}y=r.metrics.denom1}else{if(v>0){d=r.metrics.num2;g=v}else{d=r.metrics.num3;g=3*o.metrics.defaultRuleThickness}y=r.metrics.denom2}var x;if(v===0){var w=d-h.depth-(m.height-y);if(w<g){d+=.5*(g-w);y+=.5*(g-w)}x=n.makeVList([{type:\"elem\",elem:f,shift:y},{type:\"elem\",elem:c,shift:-d}],\"individualShift\",null,t)}else{var k=r.metrics.axisHeight;if(d-h.depth-(k+.5*v)<g){d+=g-(d-h.depth-(k+.5*v))}if(k-.5*v-(m.height-y)<g){y+=g-(k-.5*v-(m.height-y))}var S=p([t.style.reset(),i.TEXT.cls(),\"frac-line\"]);S.height=v;var M=-(k-.5*v);x=n.makeVList([{type:\"elem\",elem:f,shift:y},{type:\"elem\",elem:S,shift:M},{type:\"elem\",elem:c,shift:-d}],\"individualShift\",null,t)}x.height*=r.sizeMultiplier/t.style.sizeMultiplier;x.depth*=r.sizeMultiplier/t.style.sizeMultiplier;var T;if(r.size===i.DISPLAY.size){T=r.metrics.delim1}else{T=r.metrics.delim2}var A;var N;if(e.value.leftDelim==null){A=b(t,[\"mopen\"])}else{A=s.customSizedDelim(e.value.leftDelim,T,true,t.withStyle(r),e.mode,[\"mopen\"])}if(e.value.rightDelim==null){N=b(t,[\"mclose\"])}else{N=s.customSizedDelim(e.value.rightDelim,T,true,t.withStyle(r),e.mode,[\"mclose\"])}return p([\"mord\",t.style.reset(),r.cls()],[A,p([\"mfrac\"],[x]),N],t)};var k=function(e,t){var r=e.number;if(e.unit===\"ex\"){r*=t.metrics.emPerEx}else if(e.unit===\"mu\"){r/=18}return r};w.array=function(e,t){var r;var i;var s=e.value.body.length;var l=0;var h=new Array(s);var c=t.style;var m=1/o.metrics.ptPerEm;var f=5*m;var v=12*m;var d=u.deflt(e.value.arraystretch,1);var g=d*v;var y=.7*g;var x=.3*g;var b=0;for(r=0;r<e.value.body.length;++r){var w=e.value.body[r];var S=y;var M=x;if(l<w.length){l=w.length}var T=new Array(w.length);for(i=0;i<w.length;++i){var A=z(w[i],t);if(M<A.depth){M=A.depth}if(S<A.height){S=A.height}T[i]=A}var N=0;if(e.value.rowGaps[r]){N=k(e.value.rowGaps[r].value,c);if(N>0){N+=x;if(M<N){M=N}N=0}}T.height=S;T.depth=M;b+=S;T.pos=b;b+=M+N;h[r]=T}var q=b/2+c.metrics.axisHeight;var R=e.value.cols||[];var E=[];var C;var D;for(i=0,D=0;i<l||D<R.length;++i,++D){var O=R[D]||{};var P=true;while(O.type===\"separator\"){if(!P){C=p([\"arraycolsep\"],[]);C.style.width=o.metrics.doubleRuleSep+\"em\";E.push(C)}if(O.separator===\"|\"){var F=p([\"vertical-separator\"],[]);F.style.height=b+\"em\";F.style.verticalAlign=-(b-q)+\"em\";E.push(F)}else{throw new a(\"Invalid separator type: \"+O.separator)}D++;O=R[D]||{};P=false}if(i>=l){continue}var I;if(i>0||e.value.hskipBeforeAndAfter){I=u.deflt(O.pregap,f);if(I!==0){C=p([\"arraycolsep\"],[]);C.style.width=I+\"em\";E.push(C)}}var L=[];for(r=0;r<s;++r){var B=h[r];var G=B[i];if(!G){continue}var V=B.pos-q;G.depth=B.depth;G.height=B.height;L.push({type:\"elem\",elem:G,shift:V})}L=n.makeVList(L,\"individualShift\",null,t);L=p([\"col-align-\"+(O.align||\"c\")],[L]);E.push(L);if(i<l-1||e.value.hskipBeforeAndAfter){I=u.deflt(O.postgap,f);if(I!==0){C=p([\"arraycolsep\"],[]);C.style.width=I+\"em\";E.push(C)}}}h=p([\"mtable\"],E);return p([\"mord\"],[h],t)};w.spacing=function(e,t){if(e.value===\"\\\\ \"||e.value===\"\\\\space\"||e.value===\" \"||e.value===\"~\"){if(e.mode===\"text\"){return n.makeOrd(e,t,\"textord\")}else{return p([\"mspace\"],[n.mathsym(e.value,e.mode,t)],t)}}else{return p([\"mspace\",n.spacingFunctions[e.value].className],[],t)}};w.llap=function(e,t){var r=p([\"inner\"],[z(e.value.body,t.reset())]);var a=p([\"fix\"],[]);return p([\"mord\",\"llap\",t.style.cls()],[r,a],t)};w.rlap=function(e,t){var r=p([\"inner\"],[z(e.value.body,t.reset())]);var a=p([\"fix\"],[]);return p([\"mord\",\"rlap\",t.style.cls()],[r,a],t)};w.op=function(e,t){var r;var a;var s=false;if(e.type===\"supsub\"){r=e.value.sup;a=e.value.sub;e=e.value.base;s=true}var l=t.style;var h=[\"\\\\smallint\"];var c=false;if(l.size===i.DISPLAY.size&&e.value.symbol&&!u.contains(h,e.value.body)){c=true}var m;var f=0;var d=0;if(e.value.symbol){var g=c?\"Size2-Regular\":\"Size1-Regular\";m=n.makeSymbol(e.value.body,g,\"math\",t,[\"mop\",\"op-symbol\",c?\"large-op\":\"small-op\"]);f=(m.height-m.depth)/2-l.metrics.axisHeight*l.sizeMultiplier;d=m.italic}else if(e.value.value){var y=v(e.value.value,t,true);m=p([\"mop\"],y,t)}else{var x=[];for(var b=1;b<e.value.body.length;b++){x.push(n.mathsym(e.value.body[b],e.mode))}m=p([\"mop\"],x,t)}if(s){m=p([],[m]);var w;var k;var S;var M;var T;if(r){T=t.withStyle(l.sup());var A=z(r,T);w=p([l.reset(),l.sup().cls()],[A],T);k=Math.max(o.metrics.bigOpSpacing1,o.metrics.bigOpSpacing3-A.depth)}if(a){T=t.withStyle(l.sub());var N=z(a,T);S=p([l.reset(),l.sub().cls()],[N],T);M=Math.max(o.metrics.bigOpSpacing2,o.metrics.bigOpSpacing4-N.height)}var q;var R;var E;if(!r){R=m.height-f;q=n.makeVList([{type:\"kern\",size:o.metrics.bigOpSpacing5},{type:\"elem\",elem:S},{type:\"kern\",size:M},{type:\"elem\",elem:m}],\"top\",R,t);q.children[0].style.marginLeft=-d+\"em\"}else if(!a){E=m.depth+f;q=n.makeVList([{type:\"elem\",elem:m},{type:\"kern\",size:k},{type:\"elem\",elem:w},{type:\"kern\",size:o.metrics.bigOpSpacing5}],\"bottom\",E,t);q.children[1].style.marginLeft=d+\"em\"}else if(!r&&!a){return m}else{E=o.metrics.bigOpSpacing5+S.height+S.depth+M+m.depth+f;\nq=n.makeVList([{type:\"kern\",size:o.metrics.bigOpSpacing5},{type:\"elem\",elem:S},{type:\"kern\",size:M},{type:\"elem\",elem:m},{type:\"kern\",size:k},{type:\"elem\",elem:w},{type:\"kern\",size:o.metrics.bigOpSpacing5}],\"bottom\",E,t);q.children[0].style.marginLeft=-d+\"em\";q.children[2].style.marginLeft=d+\"em\"}return p([\"mop\",\"op-limits\"],[q],t)}else{if(e.value.symbol){m.style.top=f+\"em\"}return m}};w.mod=function(e,t){var r=[];if(e.value.modType===\"bmod\"){if(!t.style.isTight()){r.push(p([\"mspace\",\"negativemediumspace\"],[],t))}r.push(p([\"mspace\",\"thickspace\"],[],t))}else if(t.style.size===i.DISPLAY.size){r.push(p([\"mspace\",\"quad\"],[],t))}else if(e.value.modType===\"mod\"){r.push(p([\"mspace\",\"twelvemuspace\"],[],t))}else{r.push(p([\"mspace\",\"eightmuspace\"],[],t))}if(e.value.modType===\"pod\"||e.value.modType===\"pmod\"){r.push(n.mathsym(\"(\",e.mode))}if(e.value.modType!==\"pod\"){var a=[n.mathsym(\"m\",e.mode),n.mathsym(\"o\",e.mode),n.mathsym(\"d\",e.mode)];if(e.value.modType===\"bmod\"){r.push(p([\"mbin\"],a,t));r.push(p([\"mspace\",\"thickspace\"],[],t));if(!t.style.isTight()){r.push(p([\"mspace\",\"negativemediumspace\"],[],t))}}else{Array.prototype.push.apply(r,a);r.push(p([\"mspace\",\"sixmuspace\"],[],t))}}if(e.value.value){Array.prototype.push.apply(r,v(e.value.value,t,false))}if(e.value.modType===\"pod\"||e.value.modType===\"pmod\"){r.push(n.mathsym(\")\",e.mode))}return n.makeFragment(r)};w.katex=function(e,t){var r=p([\"k\"],[n.mathsym(\"K\",e.mode)],t);var a=p([\"a\"],[n.mathsym(\"A\",e.mode)],t);a.height=(a.height+.2)*.75;a.depth=(a.height-.2)*.75;var i=p([\"t\"],[n.mathsym(\"T\",e.mode)],t);var s=p([\"e\"],[n.mathsym(\"E\",e.mode)],t);s.height=s.height-.2155;s.depth=s.depth+.2155;var l=p([\"x\"],[n.mathsym(\"X\",e.mode)],t);return p([\"mord\",\"katex-logo\"],[r,a,i,s,l],t)};w.overline=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),\"overline-line\"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:\"elem\",elem:a},{type:\"kern\",size:3*s},{type:\"elem\",elem:l},{type:\"kern\",size:s}],\"firstBaseline\",null,t);return p([\"mord\",\"overline\"],[u],t)};w.underline=function(e,t){var r=t.style;var a=z(e.value.body,t);var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),\"underline-line\"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:\"kern\",size:s},{type:\"elem\",elem:l},{type:\"kern\",size:3*s},{type:\"elem\",elem:a}],\"top\",a.height,t);return p([\"mord\",\"underline\"],[u],t)};w.sqrt=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var l=o.metrics.defaultRuleThickness/r.sizeMultiplier;var u=p([r.reset(),i.TEXT.cls(),\"sqrt-line\"],[],t);u.height=l;u.maxFontSize=1;var h=l;if(r.id<i.TEXT.id){h=r.metrics.xHeight}var c=l+h/4;var m=(a.height+a.depth)*r.sizeMultiplier;var f=m+c+l;var v=p([\"sqrt-sign\"],[s.customSizedDelim(\"\\\\surd\",f,false,t,e.mode)],t);var d=v.height+v.depth-l;if(d>a.height+a.depth+c){c=(c+d-a.height-a.depth)/2}var g=-(a.height+c+l)+v.height;v.style.top=g+\"em\";v.height-=g;v.depth+=g;var y;if(a.height===0&&a.depth===0){y=p()}else{y=n.makeVList([{type:\"elem\",elem:a},{type:\"kern\",size:c},{type:\"elem\",elem:u},{type:\"kern\",size:l}],\"firstBaseline\",null,t)}if(!e.value.index){return p([\"mord\",\"sqrt\"],[v,y],t)}else{var x=t.withStyle(i.SCRIPTSCRIPT);var b=z(e.value.index,x);var w=p([r.reset(),i.SCRIPTSCRIPT.cls()],[b],x);var k=Math.max(v.height,y.height);var S=Math.max(v.depth,y.depth);var M=.6*(k-S);var T=n.makeVList([{type:\"elem\",elem:w}],\"shift\",-M,t);var A=p([\"root\"],[T]);return p([\"mord\",\"sqrt\"],[A,v,y],t)}};w.sizing=function(e,t){var r=v(e.value.value,t.withSize(e.value.size),false);var a=t.style;var i=n.sizingMultiplier[e.value.size];i=i*a.sizeMultiplier;for(var s=0;s<r.length;s++){var l=u.indexOf(r[s].classes,\"sizing\");if(l<0){r[s].classes.push(\"sizing\",\"reset-\"+t.size,e.value.size,a.cls());r[s].maxFontSize=i}else if(r[s].classes[l+1]===\"reset-\"+e.value.size){r[s].classes[l+1]=\"reset-\"+t.size}}return n.makeFragment(r)};w.styling=function(e,t){var r={display:i.DISPLAY,text:i.TEXT,script:i.SCRIPT,scriptscript:i.SCRIPTSCRIPT};var a=r[e.value.style];var s=t.withStyle(a);var l=v(e.value.value,s,false);for(var o=0;o<l.length;o++){var p=u.indexOf(l[o].classes,a.reset());if(p<0){l[o].classes.push(t.style.reset(),a.cls())}else{l[o].classes[p]=t.style.reset()}}return new n.makeFragment(l)};w.font=function(e,t){var r=e.value.font;return z(e.value.body,t.withFont(r))};w.delimsizing=function(e,t){var r=e.value.value;if(r===\".\"){return p([e.value.mclass])}return s.sizedDelim(r,e.value.size,t,e.mode,[e.value.mclass])};w.leftright=function(e,t){var r=v(e.value.body,t.reset(),true);var a=0;var i=0;var n=false;for(var l=0;l<r.length;l++){if(r[l].isMiddle){n=true}else{a=Math.max(r[l].height,a);i=Math.max(r[l].depth,i)}}var o=t.style;a*=o.sizeMultiplier;i*=o.sizeMultiplier;var u;if(e.value.left===\".\"){u=b(t,[\"mopen\"])}else{u=s.leftRightDelim(e.value.left,a,i,t,e.mode,[\"mopen\"])}r.unshift(u);if(n){for(l=1;l<r.length;l++){if(r[l].isMiddle){r[l]=s.leftRightDelim(r[l].isMiddle.value,a,i,r[l].isMiddle.options,e.mode,[])}}}var h;if(e.value.right===\".\"){h=b(t,[\"mclose\"])}else{h=s.leftRightDelim(e.value.right,a,i,t,e.mode,[\"mclose\"])}r.push(h);return p([\"minner\",o.cls()],r,t)};w.middle=function(e,t){var r;if(e.value.value===\".\"){r=b(t,[])}else{r=s.sizedDelim(e.value.value,1,t,e.mode,[]);r.isMiddle={value:e.value.value,options:t}}return r};w.rule=function(e,t){var r=p([\"mord\",\"rule\"],[],t);var a=t.style;var i=0;if(e.value.shift){i=k(e.value.shift,a)}var n=k(e.value.width,a);var s=k(e.value.height,a);i/=a.sizeMultiplier;n/=a.sizeMultiplier;s/=a.sizeMultiplier;r.style.borderRightWidth=n+\"em\";r.style.borderTopWidth=s+\"em\";r.style.bottom=i+\"em\";r.width=n;r.height=s+i;r.depth=-i;return r};w.kern=function(e,t){var r=p([\"mord\",\"rule\"],[],t);var a=t.style;var i=0;if(e.value.dimension){i=k(e.value.dimension,a)}i/=a.sizeMultiplier;r.style.marginLeft=i+\"em\";return r};w.accent=function(e,t){var r=e.value.base;var a=t.style;var i;if(e.type===\"supsub\"){var s=e;e=s.value.base;r=e.value.base;s.value.base=r;i=z(s,t.reset())}var l=z(r,t.withStyle(a.cramp()));var o;if(x(r)){var u=y(r);var h=z(u,t.withStyle(a.cramp()));o=h.skew}else{o=0}var c=Math.min(l.height,a.metrics.xHeight);var m=n.makeSymbol(e.value.accent,\"Main-Regular\",\"math\",t);m.italic=0;var f=e.value.accent===\"\\\\vec\"?\"accent-vec\":null;var v=p([\"accent-body\",f],[p([],[m])]);v=n.makeVList([{type:\"elem\",elem:l},{type:\"kern\",size:-c},{type:\"elem\",elem:v}],\"firstBaseline\",null,t);v.children[1].style.marginLeft=2*o+\"em\";var d=p([\"mord\",\"accent\"],[v],t);if(i){i.children[0]=d;i.height=Math.max(d.height,i.height);i.classes[0]=\"mord\";return i}else{return d}};w.phantom=function(e,t){var r=v(e.value.value,t.withPhantom(),false);return new n.makeFragment(r)};w.mclass=function(e,t){var r=v(e.value.value,t,true);return p([e.value.mclass],r,t)};var z=function(e,t){if(!e){return p()}if(w[e.type]){var r=w[e.type](e,t);var i;if(t.style!==t.parentStyle){i=t.style.sizeMultiplier/t.parentStyle.sizeMultiplier;r.height*=i;r.depth*=i}if(t.size!==t.parentSize){i=n.sizingMultiplier[t.size]/n.sizingMultiplier[t.parentSize];r.height*=i;r.depth*=i}return r}else{throw new a(\"Got group of unknown type: '\"+e.type+\"'\")}};var S=function(e,t){e=JSON.parse(JSON.stringify(e));var r=v(e,t,true);var a=p([\"base\",t.style.cls()],r,t);var i=p([\"strut\"]);var n=p([\"strut\",\"bottom\"]);i.style.height=a.height+\"em\";n.style.height=a.height+a.depth+\"em\";n.style.verticalAlign=-a.depth+\"em\";var s=p([\"katex-html\"],[i,n,a]);s.setAttribute(\"aria-hidden\",\"true\");return s};t.exports=S},{\"./ParseError\":6,\"./Style\":9,\"./buildCommon\":10,\"./delimiter\":14,\"./domTree\":15,\"./fontMetrics\":17,\"./utils\":25}],12:[function(e,t,r){var a=e(\"./buildCommon\");var i=e(\"./fontMetrics\");var n=e(\"./mathMLTree\");var s=e(\"./ParseError\");var l=e(\"./symbols\");var o=e(\"./utils\");var u=a.makeSpan;var p=a.fontMap;var h=function(e,t){if(l[t][e]&&l[t][e].replace){e=l[t][e].replace}return new n.TextNode(e)};var c=function(e,t){var r=t.font;if(!r){return null}var a=e.mode;if(r===\"mathit\"){return\"italic\"}var n=e.value;if(o.contains([\"\\\\imath\",\"\\\\jmath\"],n)){return null}if(l[a][n]&&l[a][n].replace){n=l[a][n].replace}var s=p[r].fontName;if(i.getCharacterMetrics(n,s)){return p[t.font].variant}return null};var m={};m.mathord=function(e,t){var r=new n.MathNode(\"mi\",[h(e.value,e.mode)]);var a=c(e,t);if(a){r.setAttribute(\"mathvariant\",a)}return r};m.textord=function(e,t){var r=h(e.value,e.mode);var a=c(e,t)||\"normal\";var i;if(/[0-9]/.test(e.value)){i=new n.MathNode(\"mn\",[r]);if(t.font){i.setAttribute(\"mathvariant\",a)}}else{i=new n.MathNode(\"mi\",[r]);i.setAttribute(\"mathvariant\",a)}return i};m.bin=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.rel=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.open=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.close=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.inner=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.punct=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);t.setAttribute(\"separator\",\"true\");return t};m.ordgroup=function(e,t){var r=f(e.value,t);var a=new n.MathNode(\"mrow\",r);return a};m.text=function(e,t){var r=f(e.value.body,t);var a=new n.MathNode(\"mtext\",r);return a};m.color=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode(\"mstyle\",r);a.setAttribute(\"mathcolor\",e.value.color);return a};m.supsub=function(e,t){var r=[v(e.value.base,t)];if(e.value.sub){r.push(v(e.value.sub,t))}if(e.value.sup){r.push(v(e.value.sup,t))}var a;if(!e.value.sub){a=\"msup\"}else if(!e.value.sup){a=\"msub\"}else{a=\"msubsup\"}var i=new n.MathNode(a,r);return i};m.genfrac=function(e,t){var r=new n.MathNode(\"mfrac\",[v(e.value.numer,t),v(e.value.denom,t)]);if(!e.value.hasBarLine){r.setAttribute(\"linethickness\",\"0px\")}if(e.value.leftDelim!=null||e.value.rightDelim!=null){var a=[];if(e.value.leftDelim!=null){var i=new n.MathNode(\"mo\",[new n.TextNode(e.value.leftDelim)]);i.setAttribute(\"fence\",\"true\");a.push(i)}a.push(r);if(e.value.rightDelim!=null){var s=new n.MathNode(\"mo\",[new n.TextNode(e.value.rightDelim)]);s.setAttribute(\"fence\",\"true\");a.push(s)}var l=new n.MathNode(\"mrow\",a);return l}return r};m.array=function(e,t){return new n.MathNode(\"mtable\",e.value.body.map(function(e){return new n.MathNode(\"mtr\",e.map(function(e){return new n.MathNode(\"mtd\",[v(e,t)])}))}))};m.sqrt=function(e,t){var r;if(e.value.index){r=new n.MathNode(\"mroot\",[v(e.value.body,t),v(e.value.index,t)])}else{r=new n.MathNode(\"msqrt\",[v(e.value.body,t)])}return r};m.leftright=function(e,t){var r=f(e.value.body,t);if(e.value.left!==\".\"){var a=new n.MathNode(\"mo\",[h(e.value.left,e.mode)]);a.setAttribute(\"fence\",\"true\");r.unshift(a)}if(e.value.right!==\".\"){var i=new n.MathNode(\"mo\",[h(e.value.right,e.mode)]);i.setAttribute(\"fence\",\"true\");r.push(i)}var s=new n.MathNode(\"mrow\",r);return s};m.middle=function(e,t){var r=new n.MathNode(\"mo\",[h(e.value.middle,e.mode)]);r.setAttribute(\"fence\",\"true\");return r};m.accent=function(e,t){var r=new n.MathNode(\"mo\",[h(e.value.accent,e.mode)]);var a=new n.MathNode(\"mover\",[v(e.value.base,t),r]);a.setAttribute(\"accent\",\"true\");return a};m.spacing=function(e){var t;if(e.value===\"\\\\ \"||e.value===\"\\\\space\"||e.value===\" \"||e.value===\"~\"){t=new n.MathNode(\"mtext\",[new n.TextNode(\"\\xa0\")])}else{t=new n.MathNode(\"mspace\");t.setAttribute(\"width\",a.spacingFunctions[e.value].size)}return t};m.op=function(e,t){var r;if(e.value.symbol){r=new n.MathNode(\"mo\",[h(e.value.body,e.mode)])}else if(e.value.value){r=new n.MathNode(\"mo\",f(e.value.value,t))}else{r=new n.MathNode(\"mi\",[new n.TextNode(e.value.body.slice(1))])}return r};m.mod=function(e,t){var r=[];if(e.value.modType===\"pod\"||e.value.modType===\"pmod\"){r.push(new n.MathNode(\"mo\",[h(\"(\",e.mode)]))}if(e.value.modType!==\"pod\"){r.push(new n.MathNode(\"mo\",[h(\"mod\",e.mode)]))}if(e.value.value){var a=new n.MathNode(\"mspace\");a.setAttribute(\"width\",\"0.333333em\");r.push(a);r=r.concat(f(e.value.value,t))}if(e.value.modType===\"pod\"||e.value.modType===\"pmod\"){r.push(new n.MathNode(\"mo\",[h(\")\",e.mode)]))}return new n.MathNode(\"mo\",r)};m.katex=function(e){var t=new n.MathNode(\"mtext\",[new n.TextNode(\"KaTeX\")]);return t};m.font=function(e,t){var r=e.value.font;return v(e.value.body,t.withFont(r))};m.delimsizing=function(e){var t=[];if(e.value.value!==\".\"){t.push(h(e.value.value,e.mode))}var r=new n.MathNode(\"mo\",t);if(e.value.mclass===\"mopen\"||e.value.mclass===\"mclose\"){r.setAttribute(\"fence\",\"true\")}else{r.setAttribute(\"fence\",\"false\")}return r};m.styling=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode(\"mstyle\",r);var i={display:[\"0\",\"true\"],text:[\"0\",\"false\"],script:[\"1\",\"false\"],scriptscript:[\"2\",\"false\"]};var s=i[e.value.style];a.setAttribute(\"scriptlevel\",s[0]);a.setAttribute(\"displaystyle\",s[1]);return a};m.sizing=function(e,t){var r=f(e.value.value,t);var i=new n.MathNode(\"mstyle\",r);i.setAttribute(\"mathsize\",a.sizingMultiplier[e.value.size]+\"em\");return i};m.overline=function(e,t){var r=new n.MathNode(\"mo\",[new n.TextNode(\"\\u203e\")]);r.setAttribute(\"stretchy\",\"true\");var a=new n.MathNode(\"mover\",[v(e.value.body,t),r]);a.setAttribute(\"accent\",\"true\");return a};m.underline=function(e,t){var r=new n.MathNode(\"mo\",[new n.TextNode(\"\\u203e\")]);r.setAttribute(\"stretchy\",\"true\");var a=new n.MathNode(\"munder\",[v(e.value.body,t),r]);a.setAttribute(\"accentunder\",\"true\");return a};m.rule=function(e){var t=new n.MathNode(\"mrow\");return t};m.kern=function(e){var t=new n.MathNode(\"mrow\");return t};m.llap=function(e,t){var r=new n.MathNode(\"mpadded\",[v(e.value.body,t)]);r.setAttribute(\"lspace\",\"-1width\");r.setAttribute(\"width\",\"0px\");return r};m.rlap=function(e,t){var r=new n.MathNode(\"mpadded\",[v(e.value.body,t)]);r.setAttribute(\"width\",\"0px\");return r};m.phantom=function(e,t){var r=f(e.value.value,t);return new n.MathNode(\"mphantom\",r)};m.mclass=function(e,t){var r=f(e.value.value,t);return new n.MathNode(\"mstyle\",r)};var f=function(e,t){var r=[];for(var a=0;a<e.length;a++){var i=e[a];r.push(v(i,t))}return r};var v=function(e,t){if(!e){return new n.MathNode(\"mrow\")}if(m[e.type]){return m[e.type](e,t)}else{throw new s(\"Got group of unknown type: '\"+e.type+\"'\")}};var d=function(e,t,r){var a=f(e,r);var i=new n.MathNode(\"mrow\",a);var s=new n.MathNode(\"annotation\",[new n.TextNode(t)]);s.setAttribute(\"encoding\",\"application/x-tex\");var l=new n.MathNode(\"semantics\",[i,s]);var o=new n.MathNode(\"math\",[l]);return u([\"katex-mathml\"],[o])};t.exports=d},{\"./ParseError\":6,\"./buildCommon\":10,\"./fontMetrics\":17,\"./mathMLTree\":20,\"./symbols\":23,\"./utils\":25}],13:[function(e,t,r){var a=e(\"./buildHTML\");var i=e(\"./buildMathML\");var n=e(\"./buildCommon\");var s=e(\"./Options\");var l=e(\"./Settings\");var o=e(\"./Style\");var u=n.makeSpan;var p=function(e,t,r){r=r||new l({});var n=o.TEXT;if(r.displayMode){n=o.DISPLAY}var p=new s({style:n,size:\"size5\"});var h=i(e,t,p);var c=a(e,p);var m=u([\"katex\"],[h,c]);if(r.displayMode){return u([\"katex-display\"],[m])}else{return m}};t.exports=p},{\"./Options\":5,\"./Settings\":8,\"./Style\":9,\"./buildCommon\":10,\"./buildHTML\":11,\"./buildMathML\":12}],14:[function(e,t,r){var a=e(\"./ParseError\");var i=e(\"./Style\");var n=e(\"./buildCommon\");var s=e(\"./fontMetrics\");var l=e(\"./symbols\");var o=e(\"./utils\");var u=n.makeSpan;var p=function(e,t){if(l.math[e]&&l.math[e].replace){return s.getCharacterMetrics(l.math[e].replace,t)}else{return s.getCharacterMetrics(e,t)}};var h=function(e,t,r,a){return n.makeSymbol(e,\"Size\"+t+\"-Regular\",r,a)};var c=function(e,t,r,a){a=a||[];var i=u(a.concat([\"style-wrap\",r.style.reset(),t.cls()]),[e],r);var n=t.sizeMultiplier/r.style.sizeMultiplier;i.height*=n;i.depth*=n;i.maxFontSize=t.sizeMultiplier;return i};var m=function(e,t,r,a,i,s){var l=n.makeSymbol(e,\"Main-Regular\",i,a);var o=c(l,t,a,s);if(r){var u=(1-a.style.sizeMultiplier/t.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=u+\"em\";o.height-=u;o.depth+=u}return o};var f=function(e,t,r,a,n,s){var l=h(e,t,n,a);var o=c(u([\"delimsizing\",\"size\"+t],[l],a),i.TEXT,a,s);if(r){var p=(1-a.style.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=p+\"em\";o.height-=p;o.depth+=p}return o};var v=function(e,t,r){var a;if(t===\"Size1-Regular\"){a=\"delim-size1\"}else if(t===\"Size4-Regular\"){a=\"delim-size4\"}var i=u([\"delimsizinginner\",a],[u([],[n.makeSymbol(e,t,r)])]);return{type:\"elem\",elem:i}};var d=function(e,t,r,a,s,l){var o;var h;var m;var f;o=m=f=e;h=null;var d=\"Size1-Regular\";if(e===\"\\\\uparrow\"){m=f=\"\\u23d0\"}else if(e===\"\\\\Uparrow\"){m=f=\"\\u2016\"}else if(e===\"\\\\downarrow\"){o=m=\"\\u23d0\"}else if(e===\"\\\\Downarrow\"){o=m=\"\\u2016\"}else if(e===\"\\\\updownarrow\"){o=\"\\\\uparrow\";m=\"\\u23d0\";f=\"\\\\downarrow\"}else if(e===\"\\\\Updownarrow\"){o=\"\\\\Uparrow\";m=\"\\u2016\";f=\"\\\\Downarrow\"}else if(e===\"[\"||e===\"\\\\lbrack\"){o=\"\\u23a1\";m=\"\\u23a2\";f=\"\\u23a3\";d=\"Size4-Regular\"}else if(e===\"]\"||e===\"\\\\rbrack\"){o=\"\\u23a4\";m=\"\\u23a5\";f=\"\\u23a6\";d=\"Size4-Regular\"}else if(e===\"\\\\lfloor\"){m=o=\"\\u23a2\";f=\"\\u23a3\";d=\"Size4-Regular\"}else if(e===\"\\\\lceil\"){o=\"\\u23a1\";m=f=\"\\u23a2\";d=\"Size4-Regular\"}else if(e===\"\\\\rfloor\"){m=o=\"\\u23a5\";f=\"\\u23a6\";d=\"Size4-Regular\"}else if(e===\"\\\\rceil\"){o=\"\\u23a4\";m=f=\"\\u23a5\";d=\"Size4-Regular\"}else if(e===\"(\"){o=\"\\u239b\";m=\"\\u239c\";f=\"\\u239d\";d=\"Size4-Regular\"}else if(e===\")\"){o=\"\\u239e\";m=\"\\u239f\";f=\"\\u23a0\";d=\"Size4-Regular\"}else if(e===\"\\\\{\"||e===\"\\\\lbrace\"){o=\"\\u23a7\";h=\"\\u23a8\";f=\"\\u23a9\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\}\"||e===\"\\\\rbrace\"){o=\"\\u23ab\";h=\"\\u23ac\";f=\"\\u23ad\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\lgroup\"){o=\"\\u23a7\";f=\"\\u23a9\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\rgroup\"){o=\"\\u23ab\";f=\"\\u23ad\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\lmoustache\"){o=\"\\u23a7\";f=\"\\u23ad\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\rmoustache\"){o=\"\\u23ab\";f=\"\\u23a9\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\surd\"){o=\"\\ue001\";f=\"\\u23b7\";m=\"\\ue000\";d=\"Size4-Regular\"}var g=p(o,d);var y=g.height+g.depth;var x=p(m,d);var b=x.height+x.depth;var w=p(f,d);var k=w.height+w.depth;var z=0;var S=1;if(h!==null){var M=p(h,d);z=M.height+M.depth;S=2}var T=y+k+z;var A=Math.ceil((t-T)/(S*b));var N=T+A*S*b;var q=a.style.metrics.axisHeight;if(r){q*=a.style.sizeMultiplier}var R=N/2-q;var E=[];E.push(v(f,d,s));var C;if(h===null){for(C=0;C<A;C++){E.push(v(m,d,s))}}else{for(C=0;C<A;C++){E.push(v(m,d,s))}E.push(v(h,d,s));for(C=0;C<A;C++){E.push(v(m,d,s))}}E.push(v(o,d,s));var D=n.makeVList(E,\"bottom\",R,a);return c(u([\"delimsizing\",\"mult\"],[D],a),i.TEXT,a,l)};var g=[\"(\",\")\",\"[\",\"\\\\lbrack\",\"]\",\"\\\\rbrack\",\"\\\\{\",\"\\\\lbrace\",\"\\\\}\",\"\\\\rbrace\",\"\\\\lfloor\",\"\\\\rfloor\",\"\\\\lceil\",\"\\\\rceil\",\"\\\\surd\"];var y=[\"\\\\uparrow\",\"\\\\downarrow\",\"\\\\updownarrow\",\"\\\\Uparrow\",\"\\\\Downarrow\",\"\\\\Updownarrow\",\"|\",\"\\\\|\",\"\\\\vert\",\"\\\\Vert\",\"\\\\lvert\",\"\\\\rvert\",\"\\\\lVert\",\"\\\\rVert\",\"\\\\lgroup\",\"\\\\rgroup\",\"\\\\lmoustache\",\"\\\\rmoustache\"];var x=[\"<\",\">\",\"\\\\langle\",\"\\\\rangle\",\"/\",\"\\\\backslash\",\"\\\\lt\",\"\\\\gt\"];var b=[0,1.2,1.8,2.4,3];var w=function(e,t,r,i,n){if(e===\"<\"||e===\"\\\\lt\"){e=\"\\\\langle\"}else if(e===\">\"||e===\"\\\\gt\"){e=\"\\\\rangle\"}if(o.contains(g,e)||o.contains(x,e)){return f(e,t,false,r,i,n)}else if(o.contains(y,e)){return d(e,b[t],false,r,i,n)}else{throw new a(\"Illegal delimiter: '\"+e+\"'\")}};var k=[{type:\"small\",style:i.SCRIPTSCRIPT},{type:\"small\",style:i.SCRIPT},{type:\"small\",style:i.TEXT},{type:\"large\",size:1},{type:\"large\",size:2},{type:\"large\",size:3},{type:\"large\",size:4}];var z=[{type:\"small\",style:i.SCRIPTSCRIPT},{type:\"small\",style:i.SCRIPT},{type:\"small\",style:i.TEXT},{type:\"stack\"}];var S=[{type:\"small\",style:i.SCRIPTSCRIPT},{type:\"small\",style:i.SCRIPT},{type:\"small\",style:i.TEXT},{type:\"large\",size:1},{type:\"large\",size:2},{type:\"large\",size:3},{type:\"large\",size:4},{type:\"stack\"}];var M=function(e){if(e.type===\"small\"){return\"Main-Regular\"}else if(e.type===\"large\"){return\"Size\"+e.size+\"-Regular\"}else if(e.type===\"stack\"){return\"Size4-Regular\"}};var T=function(e,t,r,a){var i=Math.min(2,3-a.style.size);for(var n=i;n<r.length;n++){if(r[n].type===\"stack\"){break}var s=p(e,M(r[n]));var l=s.height+s.depth;if(r[n].type===\"small\"){l*=r[n].style.sizeMultiplier}if(l>t){return r[n]}}return r[r.length-1]};var A=function(e,t,r,a,i,n){if(e===\"<\"||e===\"\\\\lt\"){e=\"\\\\langle\"}else if(e===\">\"||e===\"\\\\gt\"){e=\"\\\\rangle\"}var s;if(o.contains(x,e)){s=k}else if(o.contains(g,e)){s=S}else{s=z}var l=T(e,t,s,a);if(l.type===\"small\"){return m(e,l.style,r,a,i,n)}else if(l.type===\"large\"){return f(e,l.size,r,a,i,n)}else if(l.type===\"stack\"){return d(e,t,r,a,i,n)}};var N=function(e,t,r,a,i,n){var l=a.style.metrics.axisHeight*a.style.sizeMultiplier;var o=901;var u=5/s.metrics.ptPerEm;var p=Math.max(t-l,r+l);var h=Math.max(p/500*o,2*p-u);return A(e,h,true,a,i,n)};t.exports={sizedDelim:w,customSizedDelim:A,leftRightDelim:N}},{\"./ParseError\":6,\"./Style\":9,\"./buildCommon\":10,\"./fontMetrics\":17,\"./symbols\":23,\"./utils\":25}],15:[function(e,t,r){var a=e(\"./unicodeRegexes\");var i=e(\"./utils\");var n=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(\" \")};function s(e,t,r){this.classes=e||[];this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(r){if(r.style.isTight()){this.classes.push(\"mtight\")}if(r.getColor()){this.style.color=r.getColor()}}}s.prototype.setAttribute=function(e,t){this.attributes[e]=t};s.prototype.tryCombine=function(e){return false};s.prototype.toNode=function(){var e=document.createElement(\"span\");e.className=n(this.classes);for(var t in this.style){if(Object.prototype.hasOwnProperty.call(this.style,t)){e.style[t]=this.style[t]}}for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){e.setAttribute(r,this.attributes[r])}}for(var a=0;a<this.children.length;a++){e.appendChild(this.children[a].toNode())}return e};s.prototype.toMarkup=function(){var e=\"<span\";if(this.classes.length){e+=' class=\"';e+=i.escape(n(this.classes));e+='\"'}var t=\"\";for(var r in this.style){if(this.style.hasOwnProperty(r)){t+=i.hyphenate(r)+\":\"+this.style[r]+\";\"}}if(t){e+=' style=\"'+i.escape(t)+'\"'}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){e+=\" \"+a+'=\"';e+=i.escape(this.attributes[a]);e+='\"'}}e+=\">\";for(var s=0;s<this.children.length;s++){e+=this.children[s].toMarkup()}e+=\"</span>\";return e};function l(e){this.children=e||[];this.height=0;this.depth=0;this.maxFontSize=0}l.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t<this.children.length;t++){e.appendChild(this.children[t].toNode())}return e};l.prototype.toMarkup=function(){var e=\"\";for(var t=0;t<this.children.length;t++){e+=this.children[t].toMarkup()}return e};var o={\"\\xee\":\"\\u0131\\u0302\",\"\\xef\":\"\\u0131\\u0308\",\"\\xed\":\"\\u0131\\u0301\",\"\\xec\":\"\\u0131\\u0300\"};function u(e,t,r,i,n,s,l){this.value=e||\"\";this.height=t||0;this.depth=r||0;this.italic=i||0;this.skew=n||0;this.classes=s||[];this.style=l||{};this.maxFontSize=0;if(a.cjkRegex.test(e)){if(a.hangulRegex.test(e)){this.classes.push(\"hangul_fallback\")}else{this.classes.push(\"cjk_fallback\")}}if(/[\\xee\\xef\\xed\\xec]/.test(this.value)){this.value=o[this.value]}}u.prototype.tryCombine=function(e){if(!e||!(e instanceof u)||this.italic>0||n(this.classes)!==n(e.classes)||this.skew!==e.skew||this.maxFontSize!==e.maxFontSize){return false}for(var t in this.style){if(this.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}for(t in e.style){if(e.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}this.value+=e.value;this.height=Math.max(this.height,e.height);this.depth=Math.max(this.depth,e.depth);this.italic=e.italic;return true};u.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement(\"span\");t.style.marginRight=this.italic+\"em\"}if(this.classes.length>0){t=t||document.createElement(\"span\");t.className=n(this.classes)}for(var r in this.style){if(this.style.hasOwnProperty(r)){t=t||document.createElement(\"span\");t.style[r]=this.style[r]}}if(t){t.appendChild(e);return t}else{return e}};u.prototype.toMarkup=function(){var e=false;var t=\"<span\";if(this.classes.length){e=true;t+=' class=\"';t+=i.escape(n(this.classes));t+='\"'}var r=\"\";if(this.italic>0){r+=\"margin-right:\"+this.italic+\"em;\"}for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=i.hyphenate(a)+\":\"+this.style[a]+\";\"}}if(r){e=true;t+=' style=\"'+i.escape(r)+'\"'}var s=i.escape(this.value);if(e){t+=\">\";t+=s;t+=\"</span>\";return t}else{return s}};t.exports={span:s,documentFragment:l,symbolNode:u}},{\"./unicodeRegexes\":24,\"./utils\":25}],16:[function(e,t,r){var a=e(\"./parseData\");var i=e(\"./ParseError\");var n=e(\"./Style\");var s=a.ParseNode;function l(e,t){var r=[];var a=[r];var n=[];while(true){var l=e.parseExpression(false,null);r.push(new s(\"ordgroup\",l,e.mode));var o=e.nextToken.text;if(o===\"&\"){e.consume()}else if(o===\"\\\\end\"){break}else if(o===\"\\\\\\\\\"||o===\"\\\\cr\"){var u=e.parseFunction();n.push(u.value.size);r=[];a.push(r)}else{throw new i(\"Expected & or \\\\\\\\ or \\\\end\",e.nextToken)}}t.body=a;t.rowGaps=n;return new s(t.type,t,e.mode)}function o(e,r,a){if(typeof e===\"string\"){e=[e]}if(typeof r===\"number\"){r={numArgs:r}}var i={numArgs:r.numArgs||0,argTypes:r.argTypes,greediness:1,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}o(\"array\",{numArgs:1},function(e,t){var r=t[0];r=r.value.map?r.value:[r];var a=r.map(function(e){var t=e.value;if(\"lcr\".indexOf(t)!==-1){return{type:\"align\",align:t}}else if(t===\"|\"){return{type:\"separator\",separator:\"|\"}}throw new i(\"Unknown column alignment: \"+e.value,e)});var n={type:\"array\",cols:a,hskipBeforeAndAfter:true};n=l(e.parser,n);return n});o([\"matrix\",\"pmatrix\",\"bmatrix\",\"Bmatrix\",\"vmatrix\",\"Vmatrix\"],{},function(e){var t={matrix:null,pmatrix:[\"(\",\")\"],bmatrix:[\"[\",\"]\"],Bmatrix:[\"\\\\{\",\"\\\\}\"],vmatrix:[\"|\",\"|\"],Vmatrix:[\"\\\\Vert\",\"\\\\Vert\"]}[e.envName];var r={type:\"array\",hskipBeforeAndAfter:false};r=l(e.parser,r);if(t){r=new s(\"leftright\",{body:[r],left:t[0],right:t[1]},e.mode)}return r});o(\"cases\",{},function(e){var t={type:\"array\",arraystretch:1.2,cols:[{type:\"align\",align:\"l\",pregap:0,postgap:n.TEXT.metrics.quad},{type:\"align\",align:\"l\",pregap:0,postgap:0}]};t=l(e.parser,t);t=new s(\"leftright\",{body:[t],left:\"\\\\{\",right:\".\"},e.mode);return t});o(\"aligned\",{},function(e){var t={type:\"array\",cols:[]};t=l(e.parser,t);var r=new s(\"ordgroup\",[],e.mode);var a=0;t.value.body.forEach(function(e){var t;for(t=1;t<e.length;t+=2){e[t].value.unshift(r)}if(a<e.length){a=e.length}});for(var i=0;i<a;++i){var n=\"r\";var o=0;if(i%2===1){n=\"l\"}else if(i>0){o=2}t.value.cols[i]={type:\"align\",align:n,pregap:o,postgap:0}}return t})},{\"./ParseError\":6,\"./Style\":9,\"./parseData\":21}],17:[function(e,t,r){var a=e(\"./Style\");var i=e(\"./unicodeRegexes\").cjkRegex;var n={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25]};var s=0;var l=0;var o=0;var u=0;var p=.431;var h=1;var c=0;var m=.04;var f=.111;var v=.166;var d=.2;var g=.6;var y=.1;var x=10;var b=2/x;var w={defaultRuleThickness:m,bigOpSpacing1:f,bigOpSpacing2:v,bigOpSpacing3:d,bigOpSpacing4:g,bigOpSpacing5:y,ptPerEm:x,doubleRuleSep:b};var k=e(\"./fontMetricsData\");var z={\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xc6\":\"A\",\"\\xc7\":\"C\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xcc\":\"I\",\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xd0\":\"D\",\"\\xd1\":\"N\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xdd\":\"Y\",\"\\xde\":\"o\",\"\\xdf\":\"B\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\"\\xe6\":\"a\",\"\\xe7\":\"c\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xf0\":\"d\",\"\\xf1\":\"n\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xfd\":\"y\",\"\\xfe\":\"o\",\"\\xff\":\"y\",\"\\u0410\":\"A\",\"\\u0411\":\"B\",\"\\u0412\":\"B\",\"\\u0413\":\"F\",\"\\u0414\":\"A\",\"\\u0415\":\"E\",\"\\u0416\":\"K\",\"\\u0417\":\"3\",\"\\u0418\":\"N\",\"\\u0419\":\"N\",\"\\u041a\":\"K\",\"\\u041b\":\"N\",\"\\u041c\":\"M\",\"\\u041d\":\"H\",\"\\u041e\":\"O\",\"\\u041f\":\"N\",\"\\u0420\":\"P\",\"\\u0421\":\"C\",\"\\u0422\":\"T\",\"\\u0423\":\"y\",\"\\u0424\":\"O\",\"\\u0425\":\"X\",\"\\u0426\":\"U\",\"\\u0427\":\"h\",\"\\u0428\":\"W\",\"\\u0429\":\"W\",\"\\u042a\":\"B\",\"\\u042b\":\"X\",\"\\u042c\":\"B\",\"\\u042d\":\"3\",\"\\u042e\":\"X\",\"\\u042f\":\"R\",\"\\u0430\":\"a\",\"\\u0431\":\"b\",\"\\u0432\":\"a\",\"\\u0433\":\"r\",\"\\u0434\":\"y\",\"\\u0435\":\"e\",\"\\u0436\":\"m\",\"\\u0437\":\"e\",\"\\u0438\":\"n\",\"\\u0439\":\"n\",\"\\u043a\":\"n\",\"\\u043b\":\"n\",\"\\u043c\":\"m\",\"\\u043d\":\"n\",\"\\u043e\":\"o\",\"\\u043f\":\"n\",\"\\u0440\":\"p\",\"\\u0441\":\"c\",\"\\u0442\":\"o\",\"\\u0443\":\"y\",\"\\u0444\":\"b\",\"\\u0445\":\"x\",\"\\u0446\":\"n\",\"\\u0447\":\"n\",\"\\u0448\":\"w\",\"\\u0449\":\"w\",\"\\u044a\":\"a\",\"\\u044b\":\"m\",\"\\u044c\":\"a\",\"\\u044d\":\"e\",\"\\u044e\":\"m\",\"\\u044f\":\"r\"};var S=function(e,t){var r=e.charCodeAt(0);if(e[0]in z){r=z[e[0]].charCodeAt(0)}else if(i.test(e[0])){r=\"M\".charCodeAt(0)}var a=k[t][r];if(a){return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}};t.exports={metrics:w,sigmas:n,getCharacterMetrics:S}},{\"./Style\":9,\"./fontMetricsData\":18,\"./unicodeRegexes\":24}],18:[function(e,t,r){t.exports={\"AMS-Regular\":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0],\n8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},\"Caligraphic-Regular\":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},\"Fraktur-Regular\":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},\"Main-Bold\":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},\"Main-Italic\":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},\"Main-Regular\":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0],8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},\"Math-BoldItalic\":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},\"Math-Italic\":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},\"Math-Regular\":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},\"SansSerif-Regular\":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},\"Script-Regular\":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},\"Size1-Regular\":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},\"Size2-Regular\":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0],\n10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},\"Size3-Regular\":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},\"Size4-Regular\":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},\"Typewriter-Regular\":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8242:[0,.61111,0,0]}}},{}],19:[function(e,t,r){var a=e(\"./utils\");var i=e(\"./ParseError\");var n=e(\"./parseData\");var s=n.ParseNode;function l(e,r,a){if(typeof e===\"string\"){e=[e]}if(typeof r===\"number\"){r={numArgs:r}}var i={numArgs:r.numArgs,argTypes:r.argTypes,greediness:r.greediness===undefined?1:r.greediness,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}var o=function(e){if(e.type===\"ordgroup\"){return e.value}else{return[e]}};l(\"\\\\sqrt\",{numArgs:1,numOptionalArgs:1},function(e,t){var r=t[0];var a=t[1];return{type:\"sqrt\",body:a,index:r}});var u={\"\\\\text\":undefined,\"\\\\textrm\":\"mathrm\",\"\\\\textsf\":\"mathsf\",\"\\\\texttt\":\"mathtt\",\"\\\\textnormal\":\"mathrm\",\"\\\\textbf\":\"mathbf\",\"\\\\textit\":\"textit\"};l([\"\\\\text\",\"\\\\textrm\",\"\\\\textsf\",\"\\\\texttt\",\"\\\\textnormal\",\"\\\\textbf\",\"\\\\textit\"],{numArgs:1,argTypes:[\"text\"],greediness:2,allowedInText:true},function(e,t){var r=t[0];return{type:\"text\",body:o(r),style:u[e.funcName]}});l(\"\\\\color\",{numArgs:2,allowedInText:true,greediness:3,argTypes:[\"color\",\"original\"]},function(e,t){var r=t[0];var a=t[1];return{type:\"color\",color:r.value,value:o(a)}});l(\"\\\\overline\",{numArgs:1},function(e,t){var r=t[0];return{type:\"overline\",body:r}});l(\"\\\\underline\",{numArgs:1},function(e,t){var r=t[0];return{type:\"underline\",body:r}});l(\"\\\\rule\",{numArgs:2,numOptionalArgs:1,argTypes:[\"size\",\"size\",\"size\"]},function(e,t){var r=t[0];var a=t[1];var i=t[2];return{type:\"rule\",shift:r&&r.value,width:a.value,height:i.value}});l([\"\\\\kern\",\"\\\\mkern\"],{numArgs:1,argTypes:[\"size\"]},function(e,t){return{type:\"kern\",dimension:t[0].value}});l(\"\\\\KaTeX\",{numArgs:0},function(e){return{type:\"katex\"}});l(\"\\\\phantom\",{numArgs:1},function(e,t){var r=t[0];return{type:\"phantom\",value:o(r)}});l([\"\\\\mathord\",\"\\\\mathbin\",\"\\\\mathrel\",\"\\\\mathopen\",\"\\\\mathclose\",\"\\\\mathpunct\",\"\\\\mathinner\"],{numArgs:1},function(e,t){var r=t[0];return{type:\"mclass\",mclass:\"m\"+e.funcName.substr(5),value:o(r)}});l(\"\\\\stackrel\",{numArgs:2},function(e,t){var r=t[0];var a=t[1];var i=new s(\"op\",{type:\"op\",limits:true,alwaysHandleSupSub:true,symbol:false,value:o(a)},a.mode);var n=new s(\"supsub\",{base:i,sup:r,sub:null},r.mode);return{type:\"mclass\",mclass:\"mrel\",value:[n]}});l(\"\\\\bmod\",{numArgs:0},function(e,t){return{type:\"mod\",modType:\"bmod\",value:null}});l([\"\\\\pod\",\"\\\\pmod\",\"\\\\mod\"],{numArgs:1},function(e,t){var r=t[0];return{type:\"mod\",modType:e.funcName.substr(1),value:o(r)}});var p={\"\\\\bigl\":{mclass:\"mopen\",size:1},\"\\\\Bigl\":{mclass:\"mopen\",size:2},\"\\\\biggl\":{mclass:\"mopen\",size:3},\"\\\\Biggl\":{mclass:\"mopen\",size:4},\"\\\\bigr\":{mclass:\"mclose\",size:1},\"\\\\Bigr\":{mclass:\"mclose\",size:2},\"\\\\biggr\":{mclass:\"mclose\",size:3},\"\\\\Biggr\":{mclass:\"mclose\",size:4},\"\\\\bigm\":{mclass:\"mrel\",size:1},\"\\\\Bigm\":{mclass:\"mrel\",size:2},\"\\\\biggm\":{mclass:\"mrel\",size:3},\"\\\\Biggm\":{mclass:\"mrel\",size:4},\"\\\\big\":{mclass:\"mord\",size:1},\"\\\\Big\":{mclass:\"mord\",size:2},\"\\\\bigg\":{mclass:\"mord\",size:3},\"\\\\Bigg\":{mclass:\"mord\",size:4}};var h=[\"(\",\")\",\"[\",\"\\\\lbrack\",\"]\",\"\\\\rbrack\",\"\\\\{\",\"\\\\lbrace\",\"\\\\}\",\"\\\\rbrace\",\"\\\\lfloor\",\"\\\\rfloor\",\"\\\\lceil\",\"\\\\rceil\",\"<\",\">\",\"\\\\langle\",\"\\\\rangle\",\"\\\\lt\",\"\\\\gt\",\"\\\\lvert\",\"\\\\rvert\",\"\\\\lVert\",\"\\\\rVert\",\"\\\\lgroup\",\"\\\\rgroup\",\"\\\\lmoustache\",\"\\\\rmoustache\",\"/\",\"\\\\backslash\",\"|\",\"\\\\vert\",\"\\\\|\",\"\\\\Vert\",\"\\\\uparrow\",\"\\\\Uparrow\",\"\\\\downarrow\",\"\\\\Downarrow\",\"\\\\updownarrow\",\"\\\\Updownarrow\",\".\"];var c={\"\\\\Bbb\":\"\\\\mathbb\",\"\\\\bold\":\"\\\\mathbf\",\"\\\\frak\":\"\\\\mathfrak\"};l([\"\\\\blue\",\"\\\\orange\",\"\\\\pink\",\"\\\\red\",\"\\\\green\",\"\\\\gray\",\"\\\\purple\",\"\\\\blueA\",\"\\\\blueB\",\"\\\\blueC\",\"\\\\blueD\",\"\\\\blueE\",\"\\\\tealA\",\"\\\\tealB\",\"\\\\tealC\",\"\\\\tealD\",\"\\\\tealE\",\"\\\\greenA\",\"\\\\greenB\",\"\\\\greenC\",\"\\\\greenD\",\"\\\\greenE\",\"\\\\goldA\",\"\\\\goldB\",\"\\\\goldC\",\"\\\\goldD\",\"\\\\goldE\",\"\\\\redA\",\"\\\\redB\",\"\\\\redC\",\"\\\\redD\",\"\\\\redE\",\"\\\\maroonA\",\"\\\\maroonB\",\"\\\\maroonC\",\"\\\\maroonD\",\"\\\\maroonE\",\"\\\\purpleA\",\"\\\\purpleB\",\"\\\\purpleC\",\"\\\\purpleD\",\"\\\\purpleE\",\"\\\\mintA\",\"\\\\mintB\",\"\\\\mintC\",\"\\\\grayA\",\"\\\\grayB\",\"\\\\grayC\",\"\\\\grayD\",\"\\\\grayE\",\"\\\\grayF\",\"\\\\grayG\",\"\\\\grayH\",\"\\\\grayI\",\"\\\\kaBlue\",\"\\\\kaGreen\"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:\"color\",color:\"katex-\"+e.funcName.slice(1),value:o(r)}});l([\"\\\\arcsin\",\"\\\\arccos\",\"\\\\arctan\",\"\\\\arg\",\"\\\\cos\",\"\\\\cosh\",\"\\\\cot\",\"\\\\coth\",\"\\\\csc\",\"\\\\deg\",\"\\\\dim\",\"\\\\exp\",\"\\\\hom\",\"\\\\ker\",\"\\\\lg\",\"\\\\ln\",\"\\\\log\",\"\\\\sec\",\"\\\\sin\",\"\\\\sinh\",\"\\\\tan\",\"\\\\tanh\"],{numArgs:0},function(e){return{type:\"op\",limits:false,symbol:false,body:e.funcName}});l([\"\\\\det\",\"\\\\gcd\",\"\\\\inf\",\"\\\\lim\",\"\\\\liminf\",\"\\\\limsup\",\"\\\\max\",\"\\\\min\",\"\\\\Pr\",\"\\\\sup\"],{numArgs:0},function(e){return{type:\"op\",limits:true,symbol:false,body:e.funcName}});l([\"\\\\int\",\"\\\\iint\",\"\\\\iiint\",\"\\\\oint\"],{numArgs:0},function(e){return{type:\"op\",limits:false,symbol:true,body:e.funcName}});l([\"\\\\coprod\",\"\\\\bigvee\",\"\\\\bigwedge\",\"\\\\biguplus\",\"\\\\bigcap\",\"\\\\bigcup\",\"\\\\intop\",\"\\\\prod\",\"\\\\sum\",\"\\\\bigotimes\",\"\\\\bigoplus\",\"\\\\bigodot\",\"\\\\bigsqcup\",\"\\\\smallint\"],{numArgs:0},function(e){return{type:\"op\",limits:true,symbol:true,body:e.funcName}});l(\"\\\\mathop\",{numArgs:1},function(e,t){var r=t[0];return{type:\"op\",limits:false,symbol:false,value:o(r)}});l([\"\\\\dfrac\",\"\\\\frac\",\"\\\\tfrac\",\"\\\\dbinom\",\"\\\\binom\",\"\\\\tbinom\",\"\\\\\\\\atopfrac\"],{numArgs:2,greediness:2},function(e,t){var r=t[0];var a=t[1];var i;var n=null;var s=null;var l=\"auto\";switch(e.funcName){case\"\\\\dfrac\":case\"\\\\frac\":case\"\\\\tfrac\":i=true;break;case\"\\\\\\\\atopfrac\":i=false;break;case\"\\\\dbinom\":case\"\\\\binom\":case\"\\\\tbinom\":i=false;n=\"(\";s=\")\";break;default:throw new Error(\"Unrecognized genfrac command\")}switch(e.funcName){case\"\\\\dfrac\":case\"\\\\dbinom\":l=\"display\";break;case\"\\\\tfrac\":case\"\\\\tbinom\":l=\"text\";break}return{type:\"genfrac\",numer:r,denom:a,hasBarLine:i,leftDelim:n,rightDelim:s,size:l}});l([\"\\\\llap\",\"\\\\rlap\"],{numArgs:1,allowedInText:true},function(e,t){var r=t[0];return{type:e.funcName.slice(1),body:r}});var m=function(e,t){if(a.contains(h,e.value)){return e}else{throw new i(\"Invalid delimiter: '\"+e.value+\"' after '\"+t.funcName+\"'\",e)}};l([\"\\\\bigl\",\"\\\\Bigl\",\"\\\\biggl\",\"\\\\Biggl\",\"\\\\bigr\",\"\\\\Bigr\",\"\\\\biggr\",\"\\\\Biggr\",\"\\\\bigm\",\"\\\\Bigm\",\"\\\\biggm\",\"\\\\Biggm\",\"\\\\big\",\"\\\\Big\",\"\\\\bigg\",\"\\\\Bigg\"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:\"delimsizing\",size:p[e.funcName].size,mclass:p[e.funcName].mclass,value:r.value}});l([\"\\\\left\",\"\\\\right\"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:\"leftright\",value:r.value}});l(\"\\\\middle\",{numArgs:1},function(e,t){var r=m(t[0],e);if(!e.parser.leftrightDepth){throw new i(\"\\\\middle without preceding \\\\left\",r)}return{type:\"middle\",value:r.value}});l([\"\\\\tiny\",\"\\\\scriptsize\",\"\\\\footnotesize\",\"\\\\small\",\"\\\\normalsize\",\"\\\\large\",\"\\\\Large\",\"\\\\LARGE\",\"\\\\huge\",\"\\\\Huge\"],0,null);l([\"\\\\displaystyle\",\"\\\\textstyle\",\"\\\\scriptstyle\",\"\\\\scriptscriptstyle\"],0,null);l([\"\\\\mathrm\",\"\\\\mathit\",\"\\\\mathbf\",\"\\\\mathbb\",\"\\\\mathcal\",\"\\\\mathfrak\",\"\\\\mathscr\",\"\\\\mathsf\",\"\\\\mathtt\",\"\\\\Bbb\",\"\\\\bold\",\"\\\\frak\"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in c){a=c[a]}return{type:\"font\",font:a.slice(1),body:r}});l([\"\\\\acute\",\"\\\\grave\",\"\\\\ddot\",\"\\\\tilde\",\"\\\\bar\",\"\\\\breve\",\"\\\\check\",\"\\\\hat\",\"\\\\vec\",\"\\\\dot\"],{numArgs:1},function(e,t){var r=t[0];return{type:\"accent\",accent:e.funcName,base:r}});l([\"\\\\over\",\"\\\\choose\",\"\\\\atop\"],{numArgs:0,infix:true},function(e){var t;switch(e.funcName){case\"\\\\over\":t=\"\\\\frac\";break;case\"\\\\choose\":t=\"\\\\binom\";break;case\"\\\\atop\":t=\"\\\\\\\\atopfrac\";break;default:throw new Error(\"Unrecognized infix genfrac command\")}return{type:\"infix\",replaceWith:t,token:e.token}});l([\"\\\\\\\\\",\"\\\\cr\"],{numArgs:0,numOptionalArgs:1,argTypes:[\"size\"]},function(e,t){var r=t[0];return{type:\"cr\",size:r}});l([\"\\\\begin\",\"\\\\end\"],{numArgs:1,argTypes:[\"text\"]},function(e,t){var r=t[0];if(r.type!==\"ordgroup\"){throw new i(\"Invalid environment name\",r)}var a=\"\";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:\"environment\",name:a,nameGroup:r}})},{\"./ParseError\":6,\"./parseData\":21,\"./utils\":25}],20:[function(e,t,r){var a=e(\"./utils\");function i(e,t){this.type=e;this.attributes={};this.children=t||[]}i.prototype.setAttribute=function(e,t){this.attributes[e]=t};i.prototype.toNode=function(){var e=document.createElementNS(\"http://www.w3.org/1998/Math/MathML\",this.type);for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e.setAttribute(t,this.attributes[t])}}for(var r=0;r<this.children.length;r++){e.appendChild(this.children[r].toNode())}return e};i.prototype.toMarkup=function(){var e=\"<\"+this.type;for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e+=\" \"+t+'=\"';e+=a.escape(this.attributes[t]);e+='\"'}}e+=\">\";for(var r=0;r<this.children.length;r++){e+=this.children[r].toMarkup()}e+=\"</\"+this.type+\">\";return e};function n(e){this.text=e}n.prototype.toNode=function(){return document.createTextNode(this.text)};n.prototype.toMarkup=function(){return a.escape(this.text)};t.exports={MathNode:i,TextNode:n}},{\"./utils\":25}],21:[function(e,t,r){function a(e,t,r,a,i){this.type=e;this.value=t;this.mode=r;if(a&&(!i||i.lexer===a.lexer)){this.lexer=a.lexer;this.start=a.start;this.end=(i||a).end}}t.exports={ParseNode:a}},{}],22:[function(e,t,r){var a=e(\"./Parser\");var i=function(e,t){if(!(typeof e===\"string\"||e instanceof String)){throw new TypeError(\"KaTeX can only parse string typed expression\")}var r=new a(e,t);return r.parse()};t.exports=i},{\"./Parser\":7}],23:[function(e,t,r){t.exports={math:{},text:{}};function a(e,r,a,i,n){t.exports[e][n]={font:r,group:a,replace:i}}var i=\"math\";var n=\"text\";var s=\"main\";var l=\"ams\";var o=\"accent\";var u=\"bin\";var p=\"close\";var h=\"inner\";var c=\"mathord\";var m=\"op\";var f=\"open\";var v=\"punct\";var d=\"rel\";var g=\"spacing\";var y=\"textord\";a(i,s,d,\"\\u2261\",\"\\\\equiv\");a(i,s,d,\"\\u227a\",\"\\\\prec\");a(i,s,d,\"\\u227b\",\"\\\\succ\");a(i,s,d,\"\\u223c\",\"\\\\sim\");a(i,s,d,\"\\u22a5\",\"\\\\perp\");a(i,s,d,\"\\u2aaf\",\"\\\\preceq\");a(i,s,d,\"\\u2ab0\",\"\\\\succeq\");a(i,s,d,\"\\u2243\",\"\\\\simeq\");a(i,s,d,\"\\u2223\",\"\\\\mid\");a(i,s,d,\"\\u226a\",\"\\\\ll\");a(i,s,d,\"\\u226b\",\"\\\\gg\");a(i,s,d,\"\\u224d\",\"\\\\asymp\");a(i,s,d,\"\\u2225\",\"\\\\parallel\");a(i,s,d,\"\\u22c8\",\"\\\\bowtie\");a(i,s,d,\"\\u2323\",\"\\\\smile\");a(i,s,d,\"\\u2291\",\"\\\\sqsubseteq\");a(i,s,d,\"\\u2292\",\"\\\\sqsupseteq\");a(i,s,d,\"\\u2250\",\"\\\\doteq\");a(i,s,d,\"\\u2322\",\"\\\\frown\");a(i,s,d,\"\\u220b\",\"\\\\ni\");a(i,s,d,\"\\u221d\",\"\\\\propto\");a(i,s,d,\"\\u22a2\",\"\\\\vdash\");a(i,s,d,\"\\u22a3\",\"\\\\dashv\");a(i,s,d,\"\\u220b\",\"\\\\owns\");a(i,s,v,\".\",\"\\\\ldotp\");a(i,s,v,\"\\u22c5\",\"\\\\cdotp\");a(i,s,y,\"#\",\"\\\\#\");a(n,s,y,\"#\",\"\\\\#\");a(i,s,y,\"&\",\"\\\\&\");a(n,s,y,\"&\",\"\\\\&\");a(i,s,y,\"\\u2135\",\"\\\\aleph\");a(i,s,y,\"\\u2200\",\"\\\\forall\");a(i,s,y,\"\\u210f\",\"\\\\hbar\");a(i,s,y,\"\\u2203\",\"\\\\exists\");a(i,s,y,\"\\u2207\",\"\\\\nabla\");a(i,s,y,\"\\u266d\",\"\\\\flat\");a(i,s,y,\"\\u2113\",\"\\\\ell\");a(i,s,y,\"\\u266e\",\"\\\\natural\");a(i,s,y,\"\\u2663\",\"\\\\clubsuit\");a(i,s,y,\"\\u2118\",\"\\\\wp\");a(i,s,y,\"\\u266f\",\"\\\\sharp\");a(i,s,y,\"\\u2662\",\"\\\\diamondsuit\");a(i,s,y,\"\\u211c\",\"\\\\Re\");a(i,s,y,\"\\u2661\",\"\\\\heartsuit\");a(i,s,y,\"\\u2111\",\"\\\\Im\");a(i,s,y,\"\\u2660\",\"\\\\spadesuit\");a(i,s,y,\"\\u2020\",\"\\\\dag\");a(i,s,y,\"\\u2021\",\"\\\\ddag\");a(i,s,p,\"\\u23b1\",\"\\\\rmoustache\");a(i,s,f,\"\\u23b0\",\"\\\\lmoustache\");a(i,s,p,\"\\u27ef\",\"\\\\rgroup\");a(i,s,f,\"\\u27ee\",\"\\\\lgroup\");a(i,s,u,\"\\u2213\",\"\\\\mp\");a(i,s,u,\"\\u2296\",\"\\\\ominus\");a(i,s,u,\"\\u228e\",\"\\\\uplus\");a(i,s,u,\"\\u2293\",\"\\\\sqcap\");a(i,s,u,\"\\u2217\",\"\\\\ast\");a(i,s,u,\"\\u2294\",\"\\\\sqcup\");a(i,s,u,\"\\u25ef\",\"\\\\bigcirc\");a(i,s,u,\"\\u2219\",\"\\\\bullet\");a(i,s,u,\"\\u2021\",\"\\\\ddagger\");a(i,s,u,\"\\u2240\",\"\\\\wr\");a(i,s,u,\"\\u2a3f\",\"\\\\amalg\");a(i,s,d,\"\\u27f5\",\"\\\\longleftarrow\");a(i,s,d,\"\\u21d0\",\"\\\\Leftarrow\");a(i,s,d,\"\\u27f8\",\"\\\\Longleftarrow\");a(i,s,d,\"\\u27f6\",\"\\\\longrightarrow\");a(i,s,d,\"\\u21d2\",\"\\\\Rightarrow\");a(i,s,d,\"\\u27f9\",\"\\\\Longrightarrow\");a(i,s,d,\"\\u2194\",\"\\\\leftrightarrow\");a(i,s,d,\"\\u27f7\",\"\\\\longleftrightarrow\");a(i,s,d,\"\\u21d4\",\"\\\\Leftrightarrow\");a(i,s,d,\"\\u27fa\",\"\\\\Longleftrightarrow\");a(i,s,d,\"\\u21a6\",\"\\\\mapsto\");a(i,s,d,\"\\u27fc\",\"\\\\longmapsto\");a(i,s,d,\"\\u2197\",\"\\\\nearrow\");a(i,s,d,\"\\u21a9\",\"\\\\hookleftarrow\");a(i,s,d,\"\\u21aa\",\"\\\\hookrightarrow\");a(i,s,d,\"\\u2198\",\"\\\\searrow\");a(i,s,d,\"\\u21bc\",\"\\\\leftharpoonup\");a(i,s,d,\"\\u21c0\",\"\\\\rightharpoonup\");a(i,s,d,\"\\u2199\",\"\\\\swarrow\");a(i,s,d,\"\\u21bd\",\"\\\\leftharpoondown\");a(i,s,d,\"\\u21c1\",\"\\\\rightharpoondown\");a(i,s,d,\"\\u2196\",\"\\\\nwarrow\");a(i,s,d,\"\\u21cc\",\"\\\\rightleftharpoons\");a(i,l,d,\"\\u226e\",\"\\\\nless\");a(i,l,d,\"\\ue010\",\"\\\\nleqslant\");a(i,l,d,\"\\ue011\",\"\\\\nleqq\");a(i,l,d,\"\\u2a87\",\"\\\\lneq\");a(i,l,d,\"\\u2268\",\"\\\\lneqq\");a(i,l,d,\"\\ue00c\",\"\\\\lvertneqq\");a(i,l,d,\"\\u22e6\",\"\\\\lnsim\");a(i,l,d,\"\\u2a89\",\"\\\\lnapprox\");a(i,l,d,\"\\u2280\",\"\\\\nprec\");a(i,l,d,\"\\u22e0\",\"\\\\npreceq\");a(i,l,d,\"\\u22e8\",\"\\\\precnsim\");a(i,l,d,\"\\u2ab9\",\"\\\\precnapprox\");a(i,l,d,\"\\u2241\",\"\\\\nsim\");a(i,l,d,\"\\ue006\",\"\\\\nshortmid\");a(i,l,d,\"\\u2224\",\"\\\\nmid\");a(i,l,d,\"\\u22ac\",\"\\\\nvdash\");a(i,l,d,\"\\u22ad\",\"\\\\nvDash\");a(i,l,d,\"\\u22ea\",\"\\\\ntriangleleft\");a(i,l,d,\"\\u22ec\",\"\\\\ntrianglelefteq\");a(i,l,d,\"\\u228a\",\"\\\\subsetneq\");a(i,l,d,\"\\ue01a\",\"\\\\varsubsetneq\");a(i,l,d,\"\\u2acb\",\"\\\\subsetneqq\");a(i,l,d,\"\\ue017\",\"\\\\varsubsetneqq\");a(i,l,d,\"\\u226f\",\"\\\\ngtr\");a(i,l,d,\"\\ue00f\",\"\\\\ngeqslant\");a(i,l,d,\"\\ue00e\",\"\\\\ngeqq\");a(i,l,d,\"\\u2a88\",\"\\\\gneq\");a(i,l,d,\"\\u2269\",\"\\\\gneqq\");a(i,l,d,\"\\ue00d\",\"\\\\gvertneqq\");a(i,l,d,\"\\u22e7\",\"\\\\gnsim\");a(i,l,d,\"\\u2a8a\",\"\\\\gnapprox\");a(i,l,d,\"\\u2281\",\"\\\\nsucc\");a(i,l,d,\"\\u22e1\",\"\\\\nsucceq\");a(i,l,d,\"\\u22e9\",\"\\\\succnsim\");a(i,l,d,\"\\u2aba\",\"\\\\succnapprox\");a(i,l,d,\"\\u2246\",\"\\\\ncong\");a(i,l,d,\"\\ue007\",\"\\\\nshortparallel\");a(i,l,d,\"\\u2226\",\"\\\\nparallel\");a(i,l,d,\"\\u22af\",\"\\\\nVDash\");a(i,l,d,\"\\u22eb\",\"\\\\ntriangleright\");a(i,l,d,\"\\u22ed\",\"\\\\ntrianglerighteq\");a(i,l,d,\"\\ue018\",\"\\\\nsupseteqq\");a(i,l,d,\"\\u228b\",\"\\\\supsetneq\");a(i,l,d,\"\\ue01b\",\"\\\\varsupsetneq\");a(i,l,d,\"\\u2acc\",\"\\\\supsetneqq\");a(i,l,d,\"\\ue019\",\"\\\\varsupsetneqq\");a(i,l,d,\"\\u22ae\",\"\\\\nVdash\");a(i,l,d,\"\\u2ab5\",\"\\\\precneqq\");a(i,l,d,\"\\u2ab6\",\"\\\\succneqq\");a(i,l,d,\"\\ue016\",\"\\\\nsubseteqq\");a(i,l,u,\"\\u22b4\",\"\\\\unlhd\");a(i,l,u,\"\\u22b5\",\"\\\\unrhd\");a(i,l,d,\"\\u219a\",\"\\\\nleftarrow\");a(i,l,d,\"\\u219b\",\"\\\\nrightarrow\");a(i,l,d,\"\\u21cd\",\"\\\\nLeftarrow\");a(i,l,d,\"\\u21cf\",\"\\\\nRightarrow\");a(i,l,d,\"\\u21ae\",\"\\\\nleftrightarrow\");a(i,l,d,\"\\u21ce\",\"\\\\nLeftrightarrow\");a(i,l,d,\"\\u25b3\",\"\\\\vartriangle\");a(i,l,y,\"\\u210f\",\"\\\\hslash\");a(i,l,y,\"\\u25bd\",\"\\\\triangledown\");a(i,l,y,\"\\u25ca\",\"\\\\lozenge\");a(i,l,y,\"\\u24c8\",\"\\\\circledS\");a(i,l,y,\"\\xae\",\"\\\\circledR\");a(i,l,y,\"\\u2221\",\"\\\\measuredangle\");a(i,l,y,\"\\u2204\",\"\\\\nexists\");a(i,l,y,\"\\u2127\",\"\\\\mho\");a(i,l,y,\"\\u2132\",\"\\\\Finv\");a(i,l,y,\"\\u2141\",\"\\\\Game\");a(i,l,y,\"k\",\"\\\\Bbbk\");a(i,l,y,\"\\u2035\",\"\\\\backprime\");a(i,l,y,\"\\u25b2\",\"\\\\blacktriangle\");a(i,l,y,\"\\u25bc\",\"\\\\blacktriangledown\");a(i,l,y,\"\\u25a0\",\"\\\\blacksquare\");a(i,l,y,\"\\u29eb\",\"\\\\blacklozenge\");a(i,l,y,\"\\u2605\",\"\\\\bigstar\");a(i,l,y,\"\\u2222\",\"\\\\sphericalangle\");a(i,l,y,\"\\u2201\",\"\\\\complement\");a(i,l,y,\"\\xf0\",\"\\\\eth\");a(i,l,y,\"\\u2571\",\"\\\\diagup\");a(i,l,y,\"\\u2572\",\"\\\\diagdown\");a(i,l,y,\"\\u25a1\",\"\\\\square\");a(i,l,y,\"\\u25a1\",\"\\\\Box\");a(i,l,y,\"\\u25ca\",\"\\\\Diamond\");a(i,l,y,\"\\xa5\",\"\\\\yen\");a(i,l,y,\"\\u2713\",\"\\\\checkmark\");a(i,l,y,\"\\u2136\",\"\\\\beth\");a(i,l,y,\"\\u2138\",\"\\\\daleth\");a(i,l,y,\"\\u2137\",\"\\\\gimel\");a(i,l,y,\"\\u03dd\",\"\\\\digamma\");a(i,l,y,\"\\u03f0\",\"\\\\varkappa\");a(i,l,f,\"\\u250c\",\"\\\\ulcorner\");a(i,l,p,\"\\u2510\",\"\\\\urcorner\");a(i,l,f,\"\\u2514\",\"\\\\llcorner\");a(i,l,p,\"\\u2518\",\"\\\\lrcorner\");a(i,l,d,\"\\u2266\",\"\\\\leqq\");a(i,l,d,\"\\u2a7d\",\"\\\\leqslant\");a(i,l,d,\"\\u2a95\",\"\\\\eqslantless\");a(i,l,d,\"\\u2272\",\"\\\\lesssim\");a(i,l,d,\"\\u2a85\",\"\\\\lessapprox\");a(i,l,d,\"\\u224a\",\"\\\\approxeq\");a(i,l,u,\"\\u22d6\",\"\\\\lessdot\");a(i,l,d,\"\\u22d8\",\"\\\\lll\");a(i,l,d,\"\\u2276\",\"\\\\lessgtr\");a(i,l,d,\"\\u22da\",\"\\\\lesseqgtr\");a(i,l,d,\"\\u2a8b\",\"\\\\lesseqqgtr\");a(i,l,d,\"\\u2251\",\"\\\\doteqdot\");a(i,l,d,\"\\u2253\",\"\\\\risingdotseq\");a(i,l,d,\"\\u2252\",\"\\\\fallingdotseq\");a(i,l,d,\"\\u223d\",\"\\\\backsim\");a(i,l,d,\"\\u22cd\",\"\\\\backsimeq\");a(i,l,d,\"\\u2ac5\",\"\\\\subseteqq\");a(i,l,d,\"\\u22d0\",\"\\\\Subset\");a(i,l,d,\"\\u228f\",\"\\\\sqsubset\");a(i,l,d,\"\\u227c\",\"\\\\preccurlyeq\");a(i,l,d,\"\\u22de\",\"\\\\curlyeqprec\");a(i,l,d,\"\\u227e\",\"\\\\precsim\");a(i,l,d,\"\\u2ab7\",\"\\\\precapprox\");a(i,l,d,\"\\u22b2\",\"\\\\vartriangleleft\");a(i,l,d,\"\\u22b4\",\"\\\\trianglelefteq\");a(i,l,d,\"\\u22a8\",\"\\\\vDash\");a(i,l,d,\"\\u22aa\",\"\\\\Vvdash\");a(i,l,d,\"\\u2323\",\"\\\\smallsmile\");a(i,l,d,\"\\u2322\",\"\\\\smallfrown\");a(i,l,d,\"\\u224f\",\"\\\\bumpeq\");a(i,l,d,\"\\u224e\",\"\\\\Bumpeq\");a(i,l,d,\"\\u2267\",\"\\\\geqq\");a(i,l,d,\"\\u2a7e\",\"\\\\geqslant\");a(i,l,d,\"\\u2a96\",\"\\\\eqslantgtr\");a(i,l,d,\"\\u2273\",\"\\\\gtrsim\");a(i,l,d,\"\\u2a86\",\"\\\\gtrapprox\");a(i,l,u,\"\\u22d7\",\"\\\\gtrdot\");a(i,l,d,\"\\u22d9\",\"\\\\ggg\");a(i,l,d,\"\\u2277\",\"\\\\gtrless\");a(i,l,d,\"\\u22db\",\"\\\\gtreqless\");a(i,l,d,\"\\u2a8c\",\"\\\\gtreqqless\");a(i,l,d,\"\\u2256\",\"\\\\eqcirc\");a(i,l,d,\"\\u2257\",\"\\\\circeq\");a(i,l,d,\"\\u225c\",\"\\\\triangleq\");a(i,l,d,\"\\u223c\",\"\\\\thicksim\");a(i,l,d,\"\\u2248\",\"\\\\thickapprox\");a(i,l,d,\"\\u2ac6\",\"\\\\supseteqq\");a(i,l,d,\"\\u22d1\",\"\\\\Supset\");a(i,l,d,\"\\u2290\",\"\\\\sqsupset\");a(i,l,d,\"\\u227d\",\"\\\\succcurlyeq\");a(i,l,d,\"\\u22df\",\"\\\\curlyeqsucc\");a(i,l,d,\"\\u227f\",\"\\\\succsim\");a(i,l,d,\"\\u2ab8\",\"\\\\succapprox\");a(i,l,d,\"\\u22b3\",\"\\\\vartriangleright\");a(i,l,d,\"\\u22b5\",\"\\\\trianglerighteq\");a(i,l,d,\"\\u22a9\",\"\\\\Vdash\");a(i,l,d,\"\\u2223\",\"\\\\shortmid\");a(i,l,d,\"\\u2225\",\"\\\\shortparallel\");a(i,l,d,\"\\u226c\",\"\\\\between\");a(i,l,d,\"\\u22d4\",\"\\\\pitchfork\");a(i,l,d,\"\\u221d\",\"\\\\varpropto\");a(i,l,d,\"\\u25c0\",\"\\\\blacktriangleleft\");a(i,l,d,\"\\u2234\",\"\\\\therefore\");a(i,l,d,\"\\u220d\",\"\\\\backepsilon\");a(i,l,d,\"\\u25b6\",\"\\\\blacktriangleright\");a(i,l,d,\"\\u2235\",\"\\\\because\");a(i,l,d,\"\\u22d8\",\"\\\\llless\");a(i,l,d,\"\\u22d9\",\"\\\\gggtr\");a(i,l,u,\"\\u22b2\",\"\\\\lhd\");a(i,l,u,\"\\u22b3\",\"\\\\rhd\");a(i,l,d,\"\\u2242\",\"\\\\eqsim\");a(i,s,d,\"\\u22c8\",\"\\\\Join\");a(i,l,d,\"\\u2251\",\"\\\\Doteq\");a(i,l,u,\"\\u2214\",\"\\\\dotplus\");a(i,l,u,\"\\u2216\",\"\\\\smallsetminus\");a(i,l,u,\"\\u22d2\",\"\\\\Cap\");a(i,l,u,\"\\u22d3\",\"\\\\Cup\");a(i,l,u,\"\\u2a5e\",\"\\\\doublebarwedge\");a(i,l,u,\"\\u229f\",\"\\\\boxminus\");a(i,l,u,\"\\u229e\",\"\\\\boxplus\");a(i,l,u,\"\\u22c7\",\"\\\\divideontimes\");a(i,l,u,\"\\u22c9\",\"\\\\ltimes\");a(i,l,u,\"\\u22ca\",\"\\\\rtimes\");a(i,l,u,\"\\u22cb\",\"\\\\leftthreetimes\");a(i,l,u,\"\\u22cc\",\"\\\\rightthreetimes\");a(i,l,u,\"\\u22cf\",\"\\\\curlywedge\");a(i,l,u,\"\\u22ce\",\"\\\\curlyvee\");a(i,l,u,\"\\u229d\",\"\\\\circleddash\");a(i,l,u,\"\\u229b\",\"\\\\circledast\");a(i,l,u,\"\\u22c5\",\"\\\\centerdot\");a(i,l,u,\"\\u22ba\",\"\\\\intercal\");a(i,l,u,\"\\u22d2\",\"\\\\doublecap\");a(i,l,u,\"\\u22d3\",\"\\\\doublecup\");a(i,l,u,\"\\u22a0\",\"\\\\boxtimes\");a(i,l,d,\"\\u21e2\",\"\\\\dashrightarrow\");a(i,l,d,\"\\u21e0\",\"\\\\dashleftarrow\");a(i,l,d,\"\\u21c7\",\"\\\\leftleftarrows\");a(i,l,d,\"\\u21c6\",\"\\\\leftrightarrows\");a(i,l,d,\"\\u21da\",\"\\\\Lleftarrow\");a(i,l,d,\"\\u219e\",\"\\\\twoheadleftarrow\");a(i,l,d,\"\\u21a2\",\"\\\\leftarrowtail\");a(i,l,d,\"\\u21ab\",\"\\\\looparrowleft\");a(i,l,d,\"\\u21cb\",\"\\\\leftrightharpoons\");a(i,l,d,\"\\u21b6\",\"\\\\curvearrowleft\");a(i,l,d,\"\\u21ba\",\"\\\\circlearrowleft\");a(i,l,d,\"\\u21b0\",\"\\\\Lsh\");a(i,l,d,\"\\u21c8\",\"\\\\upuparrows\");a(i,l,d,\"\\u21bf\",\"\\\\upharpoonleft\");a(i,l,d,\"\\u21c3\",\"\\\\downharpoonleft\");a(i,l,d,\"\\u22b8\",\"\\\\multimap\");a(i,l,d,\"\\u21ad\",\"\\\\leftrightsquigarrow\");a(i,l,d,\"\\u21c9\",\"\\\\rightrightarrows\");a(i,l,d,\"\\u21c4\",\"\\\\rightleftarrows\");a(i,l,d,\"\\u21a0\",\"\\\\twoheadrightarrow\");a(i,l,d,\"\\u21a3\",\"\\\\rightarrowtail\");a(i,l,d,\"\\u21ac\",\"\\\\looparrowright\");a(i,l,d,\"\\u21b7\",\"\\\\curvearrowright\");a(i,l,d,\"\\u21bb\",\"\\\\circlearrowright\");a(i,l,d,\"\\u21b1\",\"\\\\Rsh\");a(i,l,d,\"\\u21ca\",\"\\\\downdownarrows\");a(i,l,d,\"\\u21be\",\"\\\\upharpoonright\");a(i,l,d,\"\\u21c2\",\"\\\\downharpoonright\");a(i,l,d,\"\\u21dd\",\"\\\\rightsquigarrow\");a(i,l,d,\"\\u21dd\",\"\\\\leadsto\");a(i,l,d,\"\\u21db\",\"\\\\Rrightarrow\");a(i,l,d,\"\\u21be\",\"\\\\restriction\");a(i,s,y,\"\\u2018\",\"`\");a(i,s,y,\"$\",\"\\\\$\");a(n,s,y,\"$\",\"\\\\$\");a(i,s,y,\"%\",\"\\\\%\");a(n,s,y,\"%\",\"\\\\%\");a(i,s,y,\"_\",\"\\\\_\");a(n,s,y,\"_\",\"\\\\_\");a(i,s,y,\"\\u2220\",\"\\\\angle\");a(i,s,y,\"\\u221e\",\"\\\\infty\");a(i,s,y,\"\\u2032\",\"\\\\prime\");a(i,s,y,\"\\u25b3\",\"\\\\triangle\");a(i,s,y,\"\\u0393\",\"\\\\Gamma\");a(i,s,y,\"\\u0394\",\"\\\\Delta\");a(i,s,y,\"\\u0398\",\"\\\\Theta\");a(i,s,y,\"\\u039b\",\"\\\\Lambda\");a(i,s,y,\"\\u039e\",\"\\\\Xi\");a(i,s,y,\"\\u03a0\",\"\\\\Pi\");a(i,s,y,\"\\u03a3\",\"\\\\Sigma\");a(i,s,y,\"\\u03a5\",\"\\\\Upsilon\");a(i,s,y,\"\\u03a6\",\"\\\\Phi\");a(i,s,y,\"\\u03a8\",\"\\\\Psi\");a(i,s,y,\"\\u03a9\",\"\\\\Omega\");a(i,s,y,\"\\xac\",\"\\\\neg\");a(i,s,y,\"\\xac\",\"\\\\lnot\");a(i,s,y,\"\\u22a4\",\"\\\\top\");a(i,s,y,\"\\u22a5\",\"\\\\bot\");a(i,s,y,\"\\u2205\",\"\\\\emptyset\");a(i,l,y,\"\\u2205\",\"\\\\varnothing\");a(i,s,c,\"\\u03b1\",\"\\\\alpha\");a(i,s,c,\"\\u03b2\",\"\\\\beta\");a(i,s,c,\"\\u03b3\",\"\\\\gamma\");a(i,s,c,\"\\u03b4\",\"\\\\delta\");a(i,s,c,\"\\u03f5\",\"\\\\epsilon\");a(i,s,c,\"\\u03b6\",\"\\\\zeta\");a(i,s,c,\"\\u03b7\",\"\\\\eta\");a(i,s,c,\"\\u03b8\",\"\\\\theta\");a(i,s,c,\"\\u03b9\",\"\\\\iota\");a(i,s,c,\"\\u03ba\",\"\\\\kappa\");a(i,s,c,\"\\u03bb\",\"\\\\lambda\");a(i,s,c,\"\\u03bc\",\"\\\\mu\");a(i,s,c,\"\\u03bd\",\"\\\\nu\");a(i,s,c,\"\\u03be\",\"\\\\xi\");a(i,s,c,\"o\",\"\\\\omicron\");a(i,s,c,\"\\u03c0\",\"\\\\pi\");a(i,s,c,\"\\u03c1\",\"\\\\rho\");a(i,s,c,\"\\u03c3\",\"\\\\sigma\");a(i,s,c,\"\\u03c4\",\"\\\\tau\");a(i,s,c,\"\\u03c5\",\"\\\\upsilon\");a(i,s,c,\"\\u03d5\",\"\\\\phi\");a(i,s,c,\"\\u03c7\",\"\\\\chi\");a(i,s,c,\"\\u03c8\",\"\\\\psi\");a(i,s,c,\"\\u03c9\",\"\\\\omega\");a(i,s,c,\"\\u03b5\",\"\\\\varepsilon\");a(i,s,c,\"\\u03d1\",\"\\\\vartheta\");a(i,s,c,\"\\u03d6\",\"\\\\varpi\");a(i,s,c,\"\\u03f1\",\"\\\\varrho\");a(i,s,c,\"\\u03c2\",\"\\\\varsigma\");a(i,s,c,\"\\u03c6\",\"\\\\varphi\");a(i,s,u,\"\\u2217\",\"*\");a(i,s,u,\"+\",\"+\");a(i,s,u,\"\\u2212\",\"-\");a(i,s,u,\"\\u22c5\",\"\\\\cdot\");a(i,s,u,\"\\u2218\",\"\\\\circ\");a(i,s,u,\"\\xf7\",\"\\\\div\");a(i,s,u,\"\\xb1\",\"\\\\pm\");a(i,s,u,\"\\xd7\",\"\\\\times\");a(i,s,u,\"\\u2229\",\"\\\\cap\");a(i,s,u,\"\\u222a\",\"\\\\cup\");a(i,s,u,\"\\u2216\",\"\\\\setminus\");a(i,s,u,\"\\u2227\",\"\\\\land\");a(i,s,u,\"\\u2228\",\"\\\\lor\");a(i,s,u,\"\\u2227\",\"\\\\wedge\");a(i,s,u,\"\\u2228\",\"\\\\vee\");a(i,s,y,\"\\u221a\",\"\\\\surd\");a(i,s,f,\"(\",\"(\");a(i,s,f,\"[\",\"[\");a(i,s,f,\"\\u27e8\",\"\\\\langle\");a(i,s,f,\"\\u2223\",\"\\\\lvert\");a(i,s,f,\"\\u2225\",\"\\\\lVert\");a(i,s,p,\")\",\")\");a(i,s,p,\"]\",\"]\");a(i,s,p,\"?\",\"?\");a(i,s,p,\"!\",\"!\");a(i,s,p,\"\\u27e9\",\"\\\\rangle\");a(i,s,p,\"\\u2223\",\"\\\\rvert\");a(i,s,p,\"\\u2225\",\"\\\\rVert\");a(i,s,d,\"=\",\"=\");a(i,s,d,\"<\",\"<\");a(i,s,d,\">\",\">\");a(i,s,d,\":\",\":\");a(i,s,d,\"\\u2248\",\"\\\\approx\");a(i,s,d,\"\\u2245\",\"\\\\cong\");a(i,s,d,\"\\u2265\",\"\\\\ge\");a(i,s,d,\"\\u2265\",\"\\\\geq\");a(i,s,d,\"\\u2190\",\"\\\\gets\");a(i,s,d,\">\",\"\\\\gt\");a(i,s,d,\"\\u2208\",\"\\\\in\");a(i,s,d,\"\\u2209\",\"\\\\notin\");a(i,s,d,\"\\u2282\",\"\\\\subset\");a(i,s,d,\"\\u2283\",\"\\\\supset\");a(i,s,d,\"\\u2286\",\"\\\\subseteq\");a(i,s,d,\"\\u2287\",\"\\\\supseteq\");a(i,l,d,\"\\u2288\",\"\\\\nsubseteq\");a(i,l,d,\"\\u2289\",\"\\\\nsupseteq\");a(i,s,d,\"\\u22a8\",\"\\\\models\");a(i,s,d,\"\\u2190\",\"\\\\leftarrow\");a(i,s,d,\"\\u2264\",\"\\\\le\");a(i,s,d,\"\\u2264\",\"\\\\leq\");a(i,s,d,\"<\",\"\\\\lt\");a(i,s,d,\"\\u2260\",\"\\\\ne\");a(i,s,d,\"\\u2260\",\"\\\\neq\");a(i,s,d,\"\\u2192\",\"\\\\rightarrow\");a(i,s,d,\"\\u2192\",\"\\\\to\");a(i,l,d,\"\\u2271\",\"\\\\ngeq\");a(i,l,d,\"\\u2270\",\"\\\\nleq\");a(i,s,g,null,\"\\\\!\");a(i,s,g,\"\\xa0\",\"\\\\ \");a(i,s,g,\"\\xa0\",\"~\");a(i,s,g,null,\"\\\\,\");a(i,s,g,null,\"\\\\:\");a(i,s,g,null,\"\\\\;\");a(i,s,g,null,\"\\\\enspace\");a(i,s,g,null,\"\\\\qquad\");a(i,s,g,null,\"\\\\quad\");a(i,s,g,\"\\xa0\",\"\\\\space\");a(i,s,v,\",\",\",\");a(i,s,v,\";\",\";\");a(i,s,v,\":\",\"\\\\colon\");a(i,l,u,\"\\u22bc\",\"\\\\barwedge\");a(i,l,u,\"\\u22bb\",\"\\\\veebar\");a(i,s,u,\"\\u2299\",\"\\\\odot\");a(i,s,u,\"\\u2295\",\"\\\\oplus\");a(i,s,u,\"\\u2297\",\"\\\\otimes\");a(i,s,y,\"\\u2202\",\"\\\\partial\");a(i,s,u,\"\\u2298\",\"\\\\oslash\");a(i,l,u,\"\\u229a\",\"\\\\circledcirc\");a(i,l,u,\"\\u22a1\",\"\\\\boxdot\");a(i,s,u,\"\\u25b3\",\"\\\\bigtriangleup\");a(i,s,u,\"\\u25bd\",\"\\\\bigtriangledown\");a(i,s,u,\"\\u2020\",\"\\\\dagger\");a(i,s,u,\"\\u22c4\",\"\\\\diamond\");a(i,s,u,\"\\u22c6\",\"\\\\star\");a(i,s,u,\"\\u25c3\",\"\\\\triangleleft\");a(i,s,u,\"\\u25b9\",\"\\\\triangleright\");a(i,s,f,\"{\",\"\\\\{\");a(n,s,y,\"{\",\"\\\\{\");a(i,s,p,\"}\",\"\\\\}\");a(n,s,y,\"}\",\"\\\\}\");a(i,s,f,\"{\",\"\\\\lbrace\");a(i,s,p,\"}\",\"\\\\rbrace\");a(i,s,f,\"[\",\"\\\\lbrack\");a(i,s,p,\"]\",\"\\\\rbrack\");a(i,s,f,\"\\u230a\",\"\\\\lfloor\");a(i,s,p,\"\\u230b\",\"\\\\rfloor\");a(i,s,f,\"\\u2308\",\"\\\\lceil\");a(i,s,p,\"\\u2309\",\"\\\\rceil\");a(i,s,y,\"\\\\\",\"\\\\backslash\");a(i,s,y,\"\\u2223\",\"|\");a(i,s,y,\"\\u2223\",\"\\\\vert\");a(i,s,y,\"\\u2225\",\"\\\\|\");a(i,s,y,\"\\u2225\",\"\\\\Vert\");a(i,s,d,\"\\u2191\",\"\\\\uparrow\");a(i,s,d,\"\\u21d1\",\"\\\\Uparrow\");a(i,s,d,\"\\u2193\",\"\\\\downarrow\");a(i,s,d,\"\\u21d3\",\"\\\\Downarrow\");a(i,s,d,\"\\u2195\",\"\\\\updownarrow\");a(i,s,d,\"\\u21d5\",\"\\\\Updownarrow\");a(i,i,m,\"\\u2210\",\"\\\\coprod\");a(i,i,m,\"\\u22c1\",\"\\\\bigvee\");a(i,i,m,\"\\u22c0\",\"\\\\bigwedge\");a(i,i,m,\"\\u2a04\",\"\\\\biguplus\");a(i,i,m,\"\\u22c2\",\"\\\\bigcap\");a(i,i,m,\"\\u22c3\",\"\\\\bigcup\");a(i,i,m,\"\\u222b\",\"\\\\int\");a(i,i,m,\"\\u222b\",\"\\\\intop\");a(i,i,m,\"\\u222c\",\"\\\\iint\");a(i,i,m,\"\\u222d\",\"\\\\iiint\");a(i,i,m,\"\\u220f\",\"\\\\prod\");a(i,i,m,\"\\u2211\",\"\\\\sum\");a(i,i,m,\"\\u2a02\",\"\\\\bigotimes\");a(i,i,m,\"\\u2a01\",\"\\\\bigoplus\");a(i,i,m,\"\\u2a00\",\"\\\\bigodot\");a(i,i,m,\"\\u222e\",\"\\\\oint\");a(i,i,m,\"\\u2a06\",\"\\\\bigsqcup\");a(i,i,m,\"\\u222b\",\"\\\\smallint\");a(n,s,h,\"\\u2026\",\"\\\\textellipsis\");a(i,s,h,\"\\u2026\",\"\\\\mathellipsis\");a(n,s,h,\"\\u2026\",\"\\\\ldots\");a(i,s,h,\"\\u2026\",\"\\\\ldots\");a(i,s,h,\"\\u22ef\",\"\\\\cdots\");a(i,s,h,\"\\u22f1\",\"\\\\ddots\");a(i,s,y,\"\\u22ee\",\"\\\\vdots\");a(i,s,o,\"\\xb4\",\"\\\\acute\");a(i,s,o,\"`\",\"\\\\grave\");a(i,s,o,\"\\xa8\",\"\\\\ddot\");a(i,s,o,\"~\",\"\\\\tilde\");a(i,s,o,\"\\xaf\",\"\\\\bar\");a(i,s,o,\"\\u02d8\",\"\\\\breve\");a(i,s,o,\"\\u02c7\",\"\\\\check\");a(i,s,o,\"^\",\"\\\\hat\");a(i,s,o,\"\\u20d7\",\"\\\\vec\");a(i,s,o,\"\\u02d9\",\"\\\\dot\");a(i,s,c,\"\\u0131\",\"\\\\imath\");a(i,s,c,\"\\u0237\",\"\\\\jmath\");a(n,s,y,\"\\u2013\",\"--\");a(n,s,y,\"\\u2014\",\"---\");a(n,s,y,\"\\u2018\",\"`\");a(n,s,y,\"\\u2019\",\"'\");a(n,s,y,\"\\u201c\",\"``\");a(n,s,y,\"\\u201d\",\"''\");a(i,s,y,\"\\xb0\",\"\\\\degree\");a(n,s,y,\"\\xb0\",\"\\\\degree\");a(i,s,c,\"\\xa3\",\"\\\\pounds\");a(i,l,y,\"\\u2720\",\"\\\\maltese\");a(n,l,y,\"\\u2720\",\"\\\\maltese\");a(n,s,g,\"\\xa0\",\"\\\\ \");a(n,s,g,\"\\xa0\",\" \");a(n,s,g,\"\\xa0\",\"~\");var x;var b;var w='0123456789/@.\"';for(x=0;x<w.length;x++){b=w.charAt(x);a(i,s,y,b,b)}var k='0123456789!@*()-=+[]\";:?/.,';for(x=0;x<k.length;x++){b=k.charAt(x);a(n,s,y,b,b)}var z=\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";for(x=0;x<z.length;x++){b=z.charAt(x);a(i,s,c,b,b);a(n,s,y,b,b)}for(x=192;x<=214;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=216;x<=246;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=248;x<=255;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=1040;x<=1103;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}a(n,s,y,\"\\u2013\",\"\\u2013\");a(n,s,y,\"\\u2014\",\"\\u2014\");a(n,s,y,\"\\u2018\",\"\\u2018\");a(n,s,y,\"\\u2019\",\"\\u2019\");a(n,s,y,\"\\u201c\",\"\\u201c\");a(n,s,y,\"\\u201d\",\"\\u201d\")},{}],24:[function(e,t,r){var a=/[\\uAC00-\\uD7AF]/;var i=/[\\u3040-\\u309F]|[\\u30A0-\\u30FF]|[\\u4E00-\\u9FAF]|[\\uAC00-\\uD7AF]/;t.exports={cjkRegex:i,hangulRegex:a}},{}],25:[function(e,t,r){var a=Array.prototype.indexOf;var i=function(e,t){if(e==null){return-1}if(a&&e.indexOf===a){return e.indexOf(t)}var r=0;var i=e.length;for(;r<i;r++){if(e[r]===t){return r}}return-1};var n=function(e,t){return i(e,t)!==-1};var s=function(e,t){return e===undefined?t:e};var l=/([A-Z])/g;var o=function(e){return e.replace(l,\"-$1\").toLowerCase()};var u={\"&\":\"&amp;\",\">\":\"&gt;\",\"<\":\"&lt;\",'\"':\"&quot;\",\"'\":\"&#x27;\"};var p=/[&><\"']/g;function h(e){return u[e]}function c(e){return(\"\"+e).replace(p,h)}var m;if(typeof document!==\"undefined\"){var f=document.createElement(\"span\");if(\"textContent\"in f){m=function(e,t){e.textContent=t}}else{m=function(e,t){e.innerText=t}}}function v(e){m(e,\"\")}t.exports={contains:n,deflt:s,escape:c,hyphenate:o,indexOf:i,setTextContent:m,clearNode:v}},{}]},{},[1])(1)});\n\n})($tw.node ? $tw.fakeDocument : window.document)\n",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/katex/katex.min.js",
            "module-type": "library"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff": {
            "text": "d09GRgABAAAAAJ0IAA8AAAABFwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAACc7AAAABwAAAAcZO5RsU9TLzIAAAHQAAAAUgAAAGBGfloKY21hcAAAA+QAAAJ8AAAEatjSPZFjdnQgAAAMiAAAACEAAAAuB8UHn2ZwZ20AAAZgAAAFpwAAC5fYFNvwZ2FzcAAAnOQAAAAIAAAACAAAABBnbHlmAAAOvAAAhtQAAO1wDUUO3mhlYWQAAAFYAAAAMgAAADYCoTxHaGhlYQAAAYwAAAAhAAAAJARHCBNobXR4AAACJAAAAb0AAAQc/Rwk1GxvY2EAAAysAAACEAAAAhCJzcTubWF4cAAAAbAAAAAgAAAAIAJLAohuYW1lAACVkAAAAxwAAAdr06Uh+3Bvc3QAAJisAAAEOAAACT9Xi9D0cHJlcAAADAgAAAB9AAAAio+J4cd42mNgZGBgAGJXRXGleH6brwzyzC+AIgwXt9cshtHfrv4z5NRifg3kcjAwgUQBQ+IMvgAAeNpjYGRgYH79z5AhilP229X/ezm1GIAiyICRHQChNAZiAAAAAAEAAAEHAKcABgAAAAAAAgAwAEAAdwAAAJYBnwAAAAB42mNgYvrCOIGBlYGBqYtpDwMDQw+EZnzAYMjIxIAEGhgY3gswvHkL4wekuaYwODAovP/PrPDfgiGK+TXjeQUGhv44ZpAs02ogocDACABVIhIZAAB42nWUvUoDQRDH/3tnxKioQYkWCfiBiBLED8xerGIriuAdWFgqdj6AlZU+gK2VDyAItr6A7YGtnSASLCSIpDn/s9mN66GBX2ZmZ3Y+djdBB2vgR+3yqwMEKUrBNYYoF8gY9eHgCMPhIBbIiLrAhGqjn3pZfOEd41NM0J5l3JiRsq+GCv0zRk+B8BUFq0vOKv0lU+8dQ+E9pmkvBRUsFavZR7GKAPh8Ii/Mpxk/r8bZB/3cX2Ms17I39ZC90VcPzulvo0k2WScidSt13wEismftucIpGqIzVtDUS2SZdSJB3eCBLDopOXpsIf4lf5ixcsfKqFBHkyRSR/qVOdQtTmgn1BvkUOpxHu3AMw5VOWvxjLVqZy3ONkUmZa/tT1vqVq67vi2jcke5tdiyL7D+ttM9XGzNi4+9dRfn8iSe3bTzOLQP34SZLTwTPXs0pF1ytWLek+ZZNcweosq9PFcWZ0fBF2LB9hLznLSl129hg/ewYeLjHG4enSN/Lt31SwzIW/HhPDC4OVMkgunF16WfO6zyzSRkRWyZzeslX9ud4389N3Ikvh/P8n6ylvvd/DHTf5g7VTX+FxAcA99R+61oAAAAeNrd02tIVEEUAOC5e901y7fmI1/3HB2XbgRhGQUF6Y9QAyOkhB5CEEEUQklW9LDogVSkBFkohRpCVJgpa6JmUam9qD9ySa9z9moQkZnbjx6Q2+36SLYN/NO/DsyZMw+G+WCGMSazqZbIJDZR7rBG0uQ4QM6x+lfsOHOwfKawzWw3q2UNrJF5JKetxzYoy7KQPUomhIETMmAFZEElXIQauAa1cB0a4S7cgw54AE/gNeggwIBhlNCOIRiJ0RiDSZiOmbgas3Et5mAerscCLMStuAv3YAkewBN4DiuxBuvwJt5BF7ZhJ3ZjL/ahjkM4mpqa9pQH83AezeP4Pl7HW3grv88f8ufpdmeUU1k4ohapx9TzapXarvaoL40gI8JIGDNN03IpLOsvj+0Pz/JpT/Wkpx5uQRO0Qjt0wSPogYEZT4CPR8FluAqzpj35uAE3WZ6dlqcYS/EIlmMFVuNVvIG3sdnytE96nqGGhO9S0cezl9fyZsvT6ec5qp5WL6kutVt9YTiMYCNmzGuB3pqPzRazzDxslpgZP8e9Rd5cb9r4uvGV7i/uRLedftB38lA91VE1XaHLVEUVdIHOUjmdoVN0kg7RQSql/VRIGymf8iiXciib1tBSWkwqOSmdOCEBpVACRVI4hVEIBZFMTHwTX4VHjIlRMSI+iGExJAzhFkL0i4ZBSe/SO/Q23aVv05foip6sx+uxeuhAX39vf4f2WSvTtmtbtAItU1ukOZVPykflfUTg1Dv8n0JysBmUZLOSzX/D1BecNQLsjsA5QXPnBYeEhoVHREZFz4+JjYtfkJCY5L8z+V/uCj614r9YPJFSfGfezH5aGv9d/QIVURKyeNqtVvlz00YUlnwkTkKOkoMW9VixcZraK5NSCAZMCJJlF9zDuVoJSivFTnof0DLD3+C/5sm0M/Q3/rR+b2WbQJJ2hmkmo/ft7qd995PJUIKMvcAPhWg9M2a2WjS2cy+gyxathtGh6O0FlCnGfxeMgtHpyH3LtskIyfBkvW+Yhhe5DpmKRHToUEaJrqDnbcqt3OuvmpOe3/G37we2tK1eIKjdDmzaDC1BVUbVMBRJSoq7tIqtwUrQGp+vMfN5OxAwohcLmmwHEXYEn00yWme0HllRGIYWmeUwlGS0g4MwdCirBO7JFWMYlPfaAeWlS2PShfkhmZFDOSVhl+gm+X1X8EmqnJ849zuULdnY90RP9HB3spYvwq2tIGpb8XYYyBCnmzsBjix2aqDZobyica/cNzJpaMawlK5EiKUbU2b/kMwO7qd8yaFxJdjIKa/zLGfsC76BNqOQKVFdG1lQ/fEpw/Pdkj0K9oR6OfiT6S1mGSZ48DgSfk/GnAgdKcPiaJKwYOTQSsoWZVxPVUyd8jot4y3DeuHa0ZfOKO1Qf2oy6we2Je2wZDs0rZJMxqduXHdoRoEoBJ3x7vLrANINaZpX21hNY+XQLK6Z0yERiEAHemnGi0QvEjSDoDk0p1q7QZLr1sNlmj6QTxx6Q7W2gtZOumnZ2J/X+2dVYsx6e0EyO4v8xS7NlrlIUbpucoYf03iQuYRMZIvtIOHgwVu3h/Sy2pIt8doQW+k5v4La550QnjRhfxO7L6fqlAQmhjEvES2PjI2+aZo6V/PKSIyMvxvQrHSFT1MoykkojlwRQf1fc3OmMWO4bi9Kzo6V6XHZuoAwLcC3+bJDiyoxWS4hzizPqSTL8k2V5Fi+pZI8y/MqGWNpqWSc5dsqKbB8RyUTLD9QokLmA4dKGjx0qKzBI4feVQZNl1/Dxvdg47u4W8BGljZsZHkBNrKUsJHlMmxkWYSNLFdgI8v3YSPLVdjIUilR06XmKKidi4THJng6HWgfxfVWUeSUyUEnXUQRN8UpmZBxVfIY+1cGSsmhtVF6zCW6WEry5qIfYAyxgx8ejczx40tKXNH2fgSe6R9Xgg47UTnvG0t/GvxX35DV5JK5CI8uw38YfLK9KOy46tAVVTlXc2j9v6gowg7oV5ESY6koKqLJzYtQ3un1mrKJbg8w1jEW0dHrprm4AP1VTJklNAj+NYUmvPJBryKFqPVw17UXx6KS3kE53AmWoIj7fXMreJoRWWE9zaxkz4cuz8ACpqnUbNlA93mvtlLEcygd9hkv6krKenEXxxkvtoAjnkGvvhPDJAxm2UAOJTQ04BeE1oL7TlAi02mXQ4Mj9nkUVP7YrbiRPSpqI/Bsp1PuhS6k/DrHQGAnvzKIgawhNDf0NhXQPEI0ZJOVcbZqOmTswCCixm5QETV8G9niwaZgW4YhHytidefo1zdN1EkVPMiM5DK+ObDAG6Ym4s/zqy4OU7mhpKhw1BoYzLWwklTMBTTgrdF2++j25svsEzm3FVXLJ17qKrpW7kExFwusPc5BWipUAdUbVdgwulxcEqVeQZOk19UxNDDDX6MUm/9X9bH5PF9qEiPkSL7tcGCjz8EY+t9g/205CMDAj5HLTbi8mDYnvu7ow/kKXUYvfnzK/h3MXHNhnq4A31V0FaLFUfMRV9HAp2wYp08UlyO1AD9VfcwZgM8ATAafq76pd9oAemeLOT7ANnMY7DCHwS5zGOwx5zbAF8xh8CVzGATMYRAyxwO4xxwG95nD4CvmMHjAnAbA18xh8A1zGETMYRAzxwXYZw6DDnMYdJnD4EDR9VGYD3lBG0DfanQL6DtdT1hsYvG9ohsj9g+80OwfNWL2Txox9WdFtRH1F15o6q8aMfU3jZj6UNHNEfURLzT1d42Y+odGTH2snk7kMsMfT26ZCgeUXW4/GX5TnH8AK3FNYwB42mPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGdicNjEwMmiBGJu5WRk5ICwhZjCL3WkXMwNQmhPI5nDaxeAAYTMzuGxUYewIjNjg0BGxkTnFZaMaiLeLo4GBkcWhIzkkAqQkEgg287Iy8mjtYPzfuoGldyMTUB9rigsAaUMkpwAAAHjaY2DAAEpAqMqgyrT6/3+m1UyiDAxM+/6/hbAAYVkHbgAAAAAAABYAFgAWABYA8AJ4A2IEPAWABoYHnAiqCUQJ7gsEC84M6A2wDooPcBC4EeoTZBQwFQgVzBbaF/oY2hmaGsIawhv8HbQewB/cIBwgxiEGIbAh9CJyIqAjQiPGI+wkPCSQJOQlTCWYJeQmQiamJvYnRieIJ8ooICh8KQgpjinoKioqmCsGK4Ar/CwmLFAseiykLQItYC2+LhYudC7KLxQvZi/qMKIxKjGKMfAyTjK0MxozbjPuNI404DT2NTA1VDW8New2MjaENpo22DcAN0o3fDewN/Y4Pji2OQI5mDoQOqg7DDtUO6A76jw2PHw80D0sPYA9zj5OPtA/aj/cQFBA2EFcQdJCQkKUQvJDVEO+REREzEU+RbZGSEbYR1JHwEfkSAhIiklUSbpJ/EouSoRKukrmSxhLWku4TChMik0ATTZNbk20Tf5OUE58Tr5PBE8kT7JP7lAuUHBQtFEKUVJRoFIYUpBS+lNiU75UCFRUVOBValXWVkBWolcEV5hYHliwWURZ5lqIWvBbYlvuXHhcsFzoXgheNF5cXoZerl7UXv5fHl9GX2hfml+8X9pgCGAuYHRgzGEUYZJhyGIeYnZiwGNMY9pkPGScZYRmbmboZ2RntGgGaJxpNGn2arBrmmyAbORtSm3WbmBulG7qby5vrHAUcHxxNnHKclhzCnOudEJ06nWIdgR2gnaWdqp2uHja3L13nCRXeS5cJ1SdyqG7Ok93T3fPdPf05I6TdsKG2TCzsznMRm2QdhVWWgVkIWkVdwUIgRCYIIRFMJiLBUjXQoAuGEy82JgkDNgG44vNxSbZ1wZ878Vsz/eequ7Z2dUqwPf7fX982tVMd9WpqnPe8LzP+55zagUslAVB+BIOCURggvyMRJGAh3orTsUpVJxc+S3Hy2UcOv/TMvqvAhWcpSX8afynQkPYIGwXDgqPT9ubkUz37d5FBFRDWCCb5p4qbt07nRJkAQkyOiJQGphTmEhUURDwfglhbOL5xNxTvV4rKtOb2k2f3+pFGzh4fnFxOoGEA/u3bx0fKw+WenLZjngoyCShgRqa5PZ2l+u16iDKMSnkRlI45DIply3ka9V6pVxv1IOBejkSDgYi4Uo5vOJkw2WVQl5FtSy/Dk4XBnCBSaxSZvlCjUkWilTy6HVWX4fyfaw5YsiUxONXUaYxMy0bp14pmxS96h49kmKqRN/2KJa1k/qDknbulShrPeKQRdRfV9xS7OjR/0uJ4SAWi+JcUOvYnAj0d5dMIsoyY5RKMtMCRgJlUV2mqPmd5t+EhjQmSxSLqqxlgqZsox4URfsJyzSf3ak/hq4/44xdt+/jLJNMF5CCJVCsIAka6Ow6/ITQJ4wIs8KicINwF3rn3FMqyD8oICJsGsEKMZHKGgirdBOoRoNTYe8UkskIUuT2WZGfLbzQhS90zeLiov+4XkEhjCjstI6YoGKmHoHREEKE/dBRY04TMcZov4CQg+Zb3RgWZKIQWTktKPzK65evBDG84IWF3/5Zxd/tWS/nGuvia0Aai9Op0dG77rz1pm1bN24YnR2dnZkCMx0oFTvT8WjWkEK9wWqjEo7AH26VFqq0PsGfHBhoo16ZRI26XRhABbDYSCMXCdvQahA5kUlUqxbyuSwzURIF87lCJIXg0nID7J2fCVbzcJq57Zvn3AqcK1QL2XwvCnnPrJQ17dOfjV6f0pTgrIpujjDc8ceJ//asRpVER0CE/4KJJKPfZ9eKlIrXMtrYODHpBMKuRp4NKHCR0a10VUOGZIxtHA0gxEwpnGYU28Vdr95PikYeU9HUomfwo0zD1N2aTifcRo9UOBzo0s1bUiLWQFUMrDyAUwGVIUajhhI4//WAbBi4fJ5NrD/RoRgse9XtSKPYiJf75qp2MhdOBUMTze1jc6bIn+kMTm7tt1CwNH/WJq++X2PM8wciFJZ+jj+IPyVMCTuFQ8Inpq0uJOLdYLW7ujFoswVgRQUgR5IF6TRcIgtEPiaIIt5PAXgCcwxJkqfPIGpDWX65PTQRRILFY+0LL2o93feiDRGS9rTbS2gLmEoMCfsX5+fGR8uDmc6OeNRVFWEKTakevHEVmohJWW4K+WoDzKJcr3g65AqvlNMoxKRC3v/Ti7hZAKS1TqN6TvKgkV/gtQDT6q5JOakXwTH8dqaZ0cXS6rum95y2RTH82G2kqI2UG0mdWZhYoCVq6BKR7fKGUo/Sly/1h3ruDxcObXOaJ01SG94ldtzRpTFpJkBIEL2PUtWwDBe/SZUUs3PcDIdT5w6Hbwm/4o1wt1CYisGgyL7BmCiZsei6jJvPv+3Yntk3s8Ccg74fCA7ufktv6tFVLmNTDyfuSpyRJjA1wxR0SgUbMO4pwLiCMCrMgVYfm1bWrpqoUZmglj6zoFpMZHxaWQkDbNkzzWVNXq6ldUnLl2zkOfp0cHxsy8LM9Njc+FykGsv3DatSvDfYgGgDXhlpK68XFVpOjS84dTVS7UWgGafl2AFQWJY5oJZlVwZn9hy7xl0aQlSOuzR736tn0yfPBbHV+bbrjA+9n4miErEsBTpJ7XCMiX9XGxEJEU+BQxK0mI1QPVVM3xTAWuya8H/fbvXek8t3T1CNIZFtxu+nRA7fd8SpLwxd8QodUyaJjCEiMQUPKaqEmajHMbL05o+bPzUtw0BxFDKInjj/dcmmWulreXty6LW9rPnXn7w6vevpdfvzPXFMCZMOCaKgg87uAZ3tEo4KVws3C2dQcDpZRhI7dmQrkaVrkSrfgJB6DSLo967AWJBAkzroZwLcR5VkFRwT8YBz2gLGAn+vF1T4qqIjhqYQSWKLAmPGnG3qIsWYLgIRMWkb6n/3ezhwj9/qcuvSy8Euem65BQm3nLnlziuPHzywZ/d6CAD12hAQmGwmEQsGTB2wahfa5XAfz3qqznnQ3PbqcMhEFsq0zKbOrSbvGc0UyoQjIReIjO/yYEs5bmMhL2Dw1j7qk1bEyINlNcRajkMA8ZgNf0wQ7pP1aA56xjGTB6Ng1fbwuuE7UsQByO6Q6Pk/43YV64FYIBUT8JnhAZmIhixTknOdbLU+xlSCneqYY2sGkBn2jWso/HcNxqKIZmuabt1u6qbJlIDyX0SKSCxtpb8AHG2MPfBqWTGs0p6owfAHAWE8kyOmjMuqQcDeGJjkzk1RzS5kQ7KjIVHtPnm72NnZEw8SotJ3PCpK6HOKef5LpiwxiBd6Zz+YqdV8bqtpMFmkhtj8LorHxbClYA87uB1uADtcAD57TLhO+Mp0GHQpHzoAP6++MkIoQccRJrQFJP2gc4wIPq1BxBcEeVFHsmzMCS3Ht+fALSAsLkK4MMU2plz2IusFL/pt2jsit6iIIFxxeM+urVtgGAuRsNsdyg8MGFJHLyjUiwBgRTxE5LKSRyNCDd8gKuUWDWibmcuRCQ6+gHlFWoZTrg2gWpCbzrLl8IixishM1kHjRae+mDFEBSzHGmpYdkAFaJRUJ5tc7WISyXdRTZOaT11qRd/0rKRWYWAnaLKuxfCdimoF7BDBT4jyE1RlkuNGrYKcwKIiyXfdjmlnpjMTUeU3v0VS3KFskt37auaoCCLX5Uwn5xsGtTZ/B4XAMpiLm88tKKqqKRYBW+Dc4OfADbYIR4RrhTPCp6fDNvj3MaSgow6WlNtu3l8CubdtoQfyEkVCyjFB0lRGRCrxYA7RAExHCMyBv8v7BVkOym07KPATgBnk2OWuXNF8uu/FW4Kj7Wm1pzKnCe6p6647c+rMyauK3W6kOOlmp3Up2Ytegg20g395yqONXMkAIdwkwCL4Wc9YLrCLyDJjSCNovwqtoAtBbgrhJCpPIrgbNy+068X5wu5ipmEXFyGiWyOmBAaBJpioybmAhuUrN6yt2Le/K8xpR9InE4k7XWVaQh9t84j+B5kOmVEiI1lY1Bj+xOVZxMJzb16YCVNX2jQTzOlM9QxDVjPh+TXYzAQJNt94q8dCxlsc460zCjEWPxf4UNpnGM2PKWZcm59TdcymR5IB2eeRJuDGrwE39glXCa8QPjetgsYUGWkCbllHSdAEChT1CAQAVYa8VVkMGFhRjDnHgkwWWCpevDgffqErrMtc8bIb+3lyVhBuvunUdceOHjwAPYaEfX5u3drpKYCKUMgNRUNBbi0+FICGHZsTDQ8aAAZ8EFiFcp61vDA4gOF4l3sBxwecXMumWDtHKeRtVOXXLn/H/6qJUqIILs+KcdB/87NM05RoSRR/JYo9MUVRGBy6BCjQJFNVlkiJOsa/QogqSErF4Tr2RXodh5DrKEZvQfIpnqGcooAeTGWUEUNq/mPzh6IJaMAPmBrAg37XuXP3yXDo8pBBTfA6SpM33H13ODvJwwE3oT7FRxKZ4dnm382+RRsNtg8IAhbcpSV0I9hGP/DRuz9aAvYitoloHDJDQRAXZSSKQEAJ5noSVlrByhbWJS1e8KSv5YAgcCIBz+0vhkPRbkWKXaxVH9x9tS4nkk5LhTUO8CsVdRXXTC+4LQ3GPdU8C/JQYvEglSSpN8Hj+rdAvKJITwG8XyRjCLXYF7Iow28syiqKobgCUqU8DIMA9fOf1z0B+v4kLT2Nvg8yGxSmhe3Cvo/WbYxYW2od0IQhgXE0FJF4GKSAMVkEsDW4VF74tAVymdbXrQmOhN1CLCvDeBq8/OOHPR/6nDbpbmFfS1qYGzIwKcRFEgOi7sNo0CbVvI+OkRSu8UNSMWNbPSHTJNEKABEN5pLcbNGcZ7ZFCYTjHtmhzx5EB7i4GNg62hDB5F/CpqNLAaopVMVGKl1ikVwyCpCU1tAAqijWRYFM15v/2vyJOrNaHMePyHKk+fXm5w0dBeYUFEXW+aeNgMGMmEMUEWk2dji3CS8tEQFkehii2a3Cq4X3TNtbNw4RUbrt5qmADZJqY1UnMFZQlSiBYUmSMQeQQiEEQ+4JMUgwhbZtXtzOuky7l2jiCNxOYw+cvf7UyRNHjxw8sHP7wpwLgcNNhbIWEJZul7VrdJMQdQaB6IZ4svRCuFO7CHhCET87yvvtxlErlPG0V/DqfGiFgWfgMzybkyFSqHqRbdgPYnCWCOoD50TJ0nSRZPYctQ2MdZpu4xH3gzYegYJaeNQFVo+vvco0Xcdl9O67dU3u3RZ+O4rbcZOp5//9Ajgdc7dCtmiQ6MyDtt6BrrwydpdBLRAcY+ApIitdfbNh3ng0DrmaZwKeFy0Dk+dCHjLJUvWqB04cCjqRQAdYu8SorDBtTfCNCDefsuM6PrkCqWwNhaml4VDz1HuQZUREhG+5M2dKFgX/a+djVWGdsE147JlpIL1t98u1+SgQMAKqXPSyZ0UWyUWpVe8LNLUubfrSrfxEyW3Utm2FRH5dYx24YKjHdTRw4GDDVzhPnr1IBebAccxPjELuZcNTpHYh5yE2tEdVsBN+CzjmMFTjCoyGHUAOpo1sHKwvqF62kxClS7OdvzvpaRF6SvgoDgCloeEug6fLXCfAc1nzp82faLaEA5EtRchk2NMEyc+PLklxOVFBYRRnWD//YakA6RDD4ZDs19vJ4y3/vUd4lfCuaffM6auvWpgsRiQRck206RwkoBt9JaV1DXIVhMHPMDbmDIWJVBCkRVXGkmRKbQVd1My6TLMXb+FIXDHh37vlhuu4++7dnXKDve54LeKYQCEa1UodALXtmlwnAJIR14fOceQ7qgUa4KGIR6MLFAOum8B5JmGJF7TyGl5uwz0/V8gDnYiEEwgawudqL3K47txxxNksJCP1BsqG4Ek1J9xvMNsOdkhIorfeLKKNRxKIHjkiiq+4lSkKsfoN0DKJ6NSlMa35561jEkLpM1cgWSf4rjOg3DCcFzXu719iFK0/vkchd96maWGmoldWKoxRPDkpaZhAbCPnN4sKdQIsruEhyBU1LDIIm+j9/7gG//DHIuaeLceU5m+av2EquB1FQYiMtsLgAkRn1+7Oofnmd/8eQ7dQCZWWhOZSq53n/DJ65Gcabf6g+c/h5DB8+yt8/s8snVKsWVby35Bq6uT8ByiHV497/Ax/CmxmPUTRt0wHbFDk1g2jcU0UUBlJywXOtALQwpVMPWuB6AlpJmQf5pwgScEL1rKymXWZZtNpQZKlm1+gmSNzazHnNrk94bzbm0sEVM9KfOLRqMe48iD3bHh2kkY+a/RCcaWdmTIphnyLQMxdaQ/deW4QQqRRrUXNgOTiMMFWtCOq3XATRj078+/CJJoOg3bZpwGjVXlQIpQBmn//O4SQSDrCU44vAQrX3vvsbSCmzyBsazw0K1ENAXO2o6ItmhjVTw1/448+qIUgAfSRWBFpl9b8SvM5gAWMEij8P38iR9tnP/7cf7j4/BeQqfYKXn0hCznlj/CfCjGhLmwVbhSu/OixUTCaNrSGgLx55UPIF0GEF1eVg1yjEMGPrTw1Hb1wFCGyp3WO8HLxR/uSpQyVor3I8zzwNy+F4xHV98dGPQICZ8t133Zy2Kh7FUWx3shCHMXtBpWyl/vVqt1+9SCJWhMHvAAVarm1pzS0uStwdPPqPbamRVcdede7j2xyCQlt3PTPaW11bz1ISLAeyVidaaczXA8Coawnmj+wRkm/THVHHHPl90B8xakOjaC30bhkAK9NWzEsp1NgVcZwYnfaquJnabHz1Ib8g/lD48ePb/q9wHAlcOvGzUERFetn02tWpx6ou6ACK1h7VfF06Vwt9pXT22MSVi06frhY+KutjPRsW5fasPHz2CIMIdQ7tOG+reGZXT3wmSXiB96wuKZzarmevAt8qA6xcC9g7yMfO7B5HSdWLaVlBEVAWEHHZAmLYruYvEw6TdJW4GUaWpc0fKk2DvFcaPvWQiQUy7sxXkVOtqrIF+aFIAf3ajdpdAlTurio3Mi1a8qFfAxFBlDOswUgPC1NNiA8+jcNVcp+nTnE3v/ajalifrvdMZYbdyfHEK9xiumoAvkWoOelFeZvs1O8wnytSL/IeqshOcxIsZ/VDDZGMpYUSYpI6dmRd7zishwaOt6frKcCmnh7KDMRgti3IhG7uNLcbSxXmmUTKG/HzqlBKtn0wQexuToxZF2DTRro3XBVL6OB0tZVPRb3PxH8b87zv35ho3AMoujvC9+dNl+BKLGQSB8GR+eImARddQlIlCR0UpAELOErhFZZ36vjiIsMtQt6/nRCqy1QP4Bp8cilF3kWUOITSe2WkONQXs65cAXG0h5AUXyAX7o1wctJoiQi6fRLtuVziO59977utff+/n2/v2p8aDDVEQpmZCnk+33Yd3vuo9wmuCIj4RYMDOL2TA8c9JHgEiDw5xbYxUBQG2oVgerdA5gjwTIOMKm+DAIkB2cu1JTgyCAAQzR9ZPOrMxwXUjuKRjS2uRSNuaKh1ydW3b4zG6WBTaM+WMz9U8nHikDjYqzo+BvSQorRkPweG3GcIDY6RyxDNMF7O00PKjBTOVLYle+OQc6fn9yux2OybnatDWgcO1a/Kf9g96GJ9KAssnSyWyJE7nDcndk+m0ZGN93mHAc02RJixZH702dT50Z8LKm/qjjSKJ2rRy3qY8nokWLhm9sgp+Fg8obM6SoCyieT/sH193tgQrGUSOwHLMlMnX8caMTgpIF4zaaRCXj2yLHlM4Ato8KssFu4RrgN0bmnBsBSbAFJwrG9s0QFWoNVsilx8SENDi365tctqLoG+KDiIwrwTamFQAbwZwgGixStnNC6bGPrMo0HXl5jb+K7T9BUrGr4NLRHL9Xcm/K+9RU33Xj6hh3b5udWz0yMN+qDA8VCLtuRiEay5oUp7zRqzXm3Z6hzAEi5F80AV5QsANKqcMif/QZ7BpJRuACSfryqVQlP37MsBzeFaxztM5+N3tlviEbu6sANO7uC+sfYsaP5i7K9lfSffo/d4Gdx9H9sJblCUCV279BwxnWpARZDbYpoxxX31pBEHDOaui110Kj5U93R+WQgU+5YHxbld9yoiKYis0ffevepDpFcrvjEZ739zM0DuzNnwqLBuq9/lWSMf5VpVjnaU+zoDlERqanDR5p/uAmTgWcHrHEvfnUs/RLb+FNgX0eFc8Kb0abpwCpAu1uOH908KSqyxWetAPUMb6EEMNn9EuLrdICwifsFXpcSFMWf7Jxbrmf7RYDMS17iXHqJXylXeB0bHbv8pRdf4FXKoY3AZMqOLV/Zam5d2rz8cps7vDzR9fyWQMYg/z28fIXsLdJYnA6+8Q2HDs5tHB+t1yqDg7lgVgVi1d2aXct5eDqI2pNqHtlawYfgr8e3WhX4lfX3C3Mx/mX8SlKFG4JNcg/obrQr8/4ssYXKbVT2/3AT5td79jzOH4Xtt12f60h3ZKM2WJUItmRoWVYwG72VjAt5hrGw6coDid6bcE4fLEa6eSsRODEYrGhdMWyywRnMFnZu3JMIb8ciVVXNCFDW/BTFgb5iz47F3bYsUylRsoLxwq7J4uqglITklxcIUEJSDOx8+tC1VNUkXaHsxpuoSkg4X9N61K6AkowkwqGu8c6+w1MTwxscTEyFGqrIPgO8XEXEHdyp4MaAqHaOZtJT5X50ZxJj0QqISsIO9GwqF3u6utcOhHLZoJkoTPWmc+FCLhou9gdC6SbQJTqGJJO43OYzgKt3eLg6BZF+i/DuaVeEYClsWjUqUSThTb0ultq5clZEcAhI/mkftvyChnwZBne5ltYlLV+yUYvDzc+5IXewyx3s9tKgYL2R8abnwKBaNjGIlou0HtS1KrQ8AfJCrVfNGkRTAImNOnJyLSoX9ObhMkTGa2VCVSppNstb/TWNkWAy4YHYU5DtsI6kK1KtPGTlmaXJEqNbjVFLQen9vIJLvzdmuAp+lwxx8aOM6nI8YZXkGMXN7za/q6oi9kDK1PjSHBNlUDemMblkxToUXWRvViqW1vxXVGp+u/nDiCwHcLSi2Br4lQ35zxdAL7PCQeFK4f5nrkSQibbLuoq3ng3oziIEUUIACkTxkhzo0jbWRW2mYxBSgSQdvrSVV2d0+bToxg3w7NmOXjccG83x+hEKt2qCbebsu1X1sgVFt82N/ITV05Onr4bokelWGgUsq+WacJivuYrgZ3VN7nYVyIipU11zu3bHZI8uYspyUZnPYIwySD8T/RTOM7tm5yvddp8SgLyEdcVlTW/+m3i1iLGW6YizDFyV0DC63SopSMb4CdnWKtH66z8e3FKfkGZKE4F//K6pU4mJEp+w0CSqi+MfeGZ9ao0rBlifW6yY73qnPljRmSz3KcjSvvEdfbarQxU1pnSttf/lx1rChJxI8urwwtLP8NdAX6sgW90n3DKt7dwxv3GkIpFlrYVl5ssa7Qe7Rx5+B5cd5pKzVvvsdBhuTm6+5KynJnPf3nVr3Gq4mO8KKlxB1da0kZfjeDZvIcLJKGewqoed+apfTwq53pRkOMi9hmuoewLVq/XGcqkI2Gp3mNeFwWmygH9Bi6iqdGJLQkSaHHbte5PrOxEvrtIHXq+FE0xj9NG3SWIsZSrmK9WQSMqVgNh8BovoIT186/2K5kTv6wBCLxNNU6RoFC8kY1QCYgjeR5jums3/Pvv+BcRLA0XUsPOaKVFQTUAyAYWbv3LL8tm79ofGZYUhhu1i89fNH0BSV0OJ4+GGlUkmE4bmxXBx6efkH7z5xWuEO4RXCY9MO92ICGfvfMXR/VsWRmRE2sX7mKrIGoiVQaBbBJvhUHaRCz2/gTV3wX8QQTc/v4GHWB2CcPddN5w6dJDPGc5vml03PVUeKhXTqZDOcw3PDSpteoW9dWg4V/UdK1sged+bLmjRC2vBesAr0PtelGnrNwROhH2CJlZ99ZVbUa8bvmf5CpgEmkS1fAF3V3uRl+zyyn2WqeonJCkYNuW/FqlJpd3bUWI4elTEuvxPeigosnuv7ASaxCxTyR5F9/VIboKpGkqB/7muxnYzR8Uktvb8zeIrZOX4CVRI7AzZ6FXy1DTQ9htO4qztvAJtgtQWcAYr1MSv1iVRpzKfd47Gz78Pwq3yD3+Dxm4Y/QeCKb49KmI+2Q32QDlkaqFXNP8eoR5Mj+tFjZfnGTVsZk3/zCnH5r+4uCYmurbd/GHzR4uYbvi3LfWkZcB9ws2/bf4CHya9Q2jVDmKKMRaLyVlhuT7Bc4hjwhmwjDcIH5y2ypBkPHT2/hu2d0gCaltG1tShH3wqGLyNl/ksQ1UYeJ+839YwMMvllQmXtLQu1/IlG/nVvpQgPPz6e+6++cYTV0IHjx08sHk+19vlDrjd0ZwDYS+S5xNw3FUL+ZWe7CGu69Eofw6HL0pp1L2pOq9MYXozQTyfDV2YJKq3bMkn+P5KbgCLWs5jUAHPOCvlWpVnrRwKuGV5Mz4I4m0Nome1A3A6PvJBi1QfzAdDTJXEt76VlwbdHFNdda24QNWgZYv0lyJ1QpmhemKr+MFUOm466jseEyUzVNnRAxDfmMJK1JZVypTpiejwP+d60fQUZoZY/DtApAljElDPQG7zHKIoEZ1Esq3XPh2QNn2jGPYQwuSTpyjcbd94pemEgh2QsvICb0ALz2SuIcr5Yn+c14wZU2VRUV83jqZmVSPsJnSZAs+4R0GIplY3/2jVXEjCGMw0yOpo46orwhD1LV1HgfMfIQFiRKNE8GLyEv4zsJ+NwhXCCeGN09qJAzvSHaokLM/4JFVZEikhdJFPaFJjTuGogBYvWip5SSPrkkYvdt5fIBkRhGNH9+6Zn4OebFy3tivE7USX4q1Ja7/K6IXfC3yIW06Nr8hvxeHWpC1YQKvu0C5heBGEr1ByeWU5JHlMaZU3WwBW4ALRxs9orh50C5sXCBYbDp8Bav43/jNQY4hcERnOIM0wOb1BmiSG4wRr67cQfA4RYndbhJe//uVWJRwrBI8SKt4kSnv2gA7P2cMaZvgJpgDbDQdHX3nm1leSqGganG+LUXzV0SdKe0exo2oeB2dSABK/0H0PfYcotqN0ykyx6IBmoPzA+sxTJ6/VDMO5/uZHH9cMMYAcZnD/T7a4bgW47pywUzj70YYFSQxaXnmCoBGipwVK4O/1gM2C4C0TMOY0BfgdERdV5K0dS7xIY+vSxovT8fl5QZjfOb9j0/o10/UadGA4NDISyutSDPya750Itlw1W2hM4lq9NQdrEua2OJTnoaAMKUMauRDECi+L6a7y6wTmjqMEX5nmrSgrqFN3f3rgROWQQ8WApmAJTAn/53/q6647cUjZenVxbIspWkxLgrSbP/lAoI4wUArFRu8eqmLcfJNUqXziq1R0g3YgjVSiXfdV1HC75oKKuSvYGwWfxUAVb3nyA4+a2HB3jyU0Uf5LwjC+S7OJBdhtOpBgnH9SwWio+fVUCrsBTfPXDPJ9MGEvNt8q3C88IvzptLkOMfnhB1+1baOIllcAFQTVULCAVOGYhhjzVncBBnsoKvGFG+JFy38u19y6XPOX19JfEpI5e/bsI2cfufP206cOHVjcu2P72pmJ8XqVV1/cYI9j87kCj0Ixyc9gObb6iQeoz1tCmm/PBXjQmmttoPHqL34MH0e85ujNvfvLCv3DlbDo8HJg2QN1m5k4xJVdy3sbEeqFLJyEM26lHqgOoqy3hJDPvWMWLhzJGLL0Or1HddTv8fk5h8gQdwg5RYgkEsnlQPsNRjXm8tIofNW2NuIyQaSoBvqDBAUhwn9Ga76z2A2SQJxkY9TXiwDFsUg0FywFJ+oH9gC/1+ZS1iD6hEP3JAxJesastabmwJTgIia/FrIJOjbBcrqXWMNztZyMTblLl1URhP3t7+RUuxS2qNzhBff9KAOZMYCyef4fDCpzTYBZEstARzBQLRVrbvMeeuMNTsA40BdwJT5nB4wPc653TnhY+M/p0OuvSQGeRBChCuTYZNPeHVje4O+hqVkaliIh218I6CAaAB5IyTFTVwk3BDALbmNBeKqwGHaBMK6owvwOF3s1k5d1nXXpdWB8A695QBAeePg1D8PIzp29785bT1178sojhw/s27Nr+7ZNG6ZWTYxvK+S7SjszTiYK1CDDA3mu1lpuViIDtJb3IKTG15LxsotXR+HfvBWMtUoYbK9RCeW8MjbgPK40+BaYfAHuwrM275SJXD4ZxpfzSCzkTYwx16Ql7E2agNGNoxABow3x6ksdE/vMHbaWGZfJZ3XHVLxFVqAPctcZs2qezeqYf9k8h04R2UzkXGVgz9haRQ0UZOKKwSjLTU0PDNKOoCIHju3WmbUlQQ6+jYvO3rQ7UT9zF3zkU6WEKaajfxYT0xoMzw/065qm9xIygDQ6N+8ZHxINjNPhxQgW+SdEPkIAjgcwHgA0ozk51aONooV5nZg2HoATYjd9FIzNUBHq25eGD6IHiBAVKL8OvQUofzAQ3OhzyM6lbeRN+AtCSpgBq3svemw69NgCNqXjSDNfvRmLysPrsEr5Uldud6sFRRM1RTwN5qQppnYEWARY8+ELs5cGkiS2X2DMntMhXND9fK0HL/Kp+wVVDarcCOO/852cS+7EzXl6+U4MLjGZdOQFb/mC9+G4O7l8H3BDxudVX+B+L3CX6YmXvoEsqERWjz3vRtTfEJZ81+OPvun1r33g/jtuu+nG66/bu3vX9o3r164ZGOjPWCtnczk+8kkXf0J3Fap6kBsBV/DrQ0m0shDZ8PzIS6FQ3nMsLwQ7nAtz5ylf2IbCV/77D/DaeDGatfYR+N5WyIW8FuAr3iayQolvrPTmDr0HodfFSsPKrc8MpwAW47983wfvPh2TRHdD+aEvKf3Ozpm9t9oidr74Wj2b0W8+mOzYBNmTM3NV89fapzTZDEoOEG+q61LQvP/14f4FN4jlsW5FZOmobmq6Cxkci8ox10rQIDkcAIjV+qVaDVHNgUvuzfXRih5lsk7QyLQbc4L40xKyzh6ZmEx0hAZSj/7VzVe+OTUQSnTcvHdyRxixztIfHI4mgjnzwc854Cmbopn9N5u5YCJ65bb7zt9GSBEhSUUPAz9DqEilnmSi05bSFV7gDw3W1tiBfuiuEuvlcUJfIx/SSiZG+/epXtb/e8MF4OOIqPjAPiRKTpBjfGnpp+g8/rlwSLhR+Op0ZMecRERJRlRcx1df0TVjGH5u8ivs/QIDms4gfYJzHGnhehlAlm9Ck/YLkhRYLrdfyPJ7BUnwl4e/0MUrLpkeeunWwKX2tK5RvL1o4euvO35s/+K2LZvWT0+O1LtzkVBG5YUAvxLu7x5Znm7JZVtrB9q0LxJuVL2dSizLDU5qVc85r4jUG5yxD6J81S+UewvW/XWaxCPz3qpit8Xv0fcVw9VxMa8Y9WTJEEny9wNdw+n+rQ6A6Fh3frBnQ1iCMN8pQSKP3B57J+2QmEiCYYanq4FGFfgCJEzm7h2JsFvsZpC6EXHfFjU+GnM0FO5YVVjFZHxKUrrz0YSi9JVmVrsTa9y/HhA1Z/dQfqiv0LsQDmVjKgkMj3WzoIaMDrWOkDgxiUU9l++BYxzjgYbmNcOOJiBeTjVH3paRSDI4MNt9TaY4mMtzHEZgF7/AZfwx4VoUmjYhJyEyEHmgdssrdWqALjIw8dO8yIz4OtfjoDMNqMYxb3c1oBzZL3jFUw5KOmpjW+klL7aWL7YuvbjXu5gSetOL3OHyF0+XX+o6GZrK6uHl67E3Rehec3L/4taFDet6iuFqJtxVyBl8sVCQVwJadjTV2t7qpRoeF+A45frreYGbco7ptozNW8TgJRdTCFhC2yhbC2E4SfVLwP4kN5wo3akm8qIOgTrfF1DClqJhsnnWDATJwmbFVJSnLKqIWmWyf0Zj5YgZCgYtJRzUtcImXUvVVOpUih2dwX5N6pQdBamSE3aicfR/KKKKKfP9UITamG+i66GUMA1vlkUJgoMmrbFyAWjU3ZWKBCuvmw6a0WBvWFbjV4RJZwwwr/JgZdhWBiLsnuSabmISOySgpX/Hw0qJbBY6BXvagORvPVjT1akkktze1mCz3fkuPstEGc3xKX9PYt1dlbKoZGVOo89/8mzzG29E+A3NL997/pNYkogZkcUEHsAWgOJGfKuOnS58MDQcjZRDB3GXbkoAh/Tk8WvAQjG+RYmR+4VR4d0+RYiLfGl6a88K0JU9Ai8UCcC0t7R2c6eBd1DhKhEB1CBKjl+mWeElbvSS9+CGxFd+jAqjpXxnat2wJIWX46cXGju7JzHYDeeAICTaBipvSq5TNHEuC/yywSNrF7Hl7Jr65KGdV9y0rRN4L/ofakRHjMg4E/l488d/1TW7LrH+2PZDN2/vdJq/aXa2z2aDn0Cz5F5E5FS+lBbxm4hEqbhKlCJyYy5GiJLqvnB4UlSCbGQRsOA/voWHBePyOg2+lE7F/7cqhef/T3zL0m/+f67T//uL/091KjSWnsBfwweFkiA9nXLQUC8aQ+Ey/Im4fO6JV0J4oTPOY+QYAupV4Tv2JZazkIsORzNxw8Q6VvTrbozXFaWjvnMXJirq6B/ZmHt6qvHWz3YXIbEhFP7SU38rQvRA29ECX3CPscgwfvwx7MeZ7qVf4++jPxF2QT9KAu+H/9ILC3MIrHhA6WX/PrvkGDmFpBY0AtxOYU41C9VcayER/9beR8FXi9W7GnX8tBO36Pp1SsSRVBEl1jjUTSqB/UMFSyFyp7Fw+Bm5M25Ho1PrFU0xUqRr0hBDQSoi2TlQ6bIUasR0NI1ySif6E9PUDXGg182O2jkXa5DrW7nBjBXW9PJ4enjyRmzbmuUW+y072rmfQtwURRGaDCeDwXigbziBSx+jhj92XegVfomHBFdwpk1+4CYwrqsLGQx2FPRYRsBfa8pLxN7IVdptijfEbUbohxDOquBAnWpzkkEEoOgppoo5W7o4ft8Cct2TA7k2qkFwUL8EUq/UlxdVZS+JWxZq8MV55faCF8mt/86R6xSiq4gSRDIilT5GMWg1ItlqK4AZhoHTvcGtrqHS0zckJfG3jGEEfSrgQvwyJdMSDTskK3RFGKtXKFJMFnE0k5HuLLoRE/G3CWUgw76ln+A/xB+EZE16ul8DGXaVW9vaW0vIES/w8opuDnKX3AqWyeXQIprtBa5TKAeCyfLpBH8GoeHzSH86F7n/ZTGQ6AE4OnQQk1wyDIajMay7ch5rIzMGkaRE8vpVod5SaOpUKiFJVFs9ouG8DHyTaTLB4WTAYPjgIRByscPJXLdvcMue16xJUJGQD8gayY3wlJvmD944FUjknXSpb61GiL66v5R2ctHo5E0H83xVFBrJEc2c286XECcX7to/P7DPw4ol9G9gSwGQg4S4j/KuOywDtDjj5LwpUfTnpiTrRvMKw0Dn/p0ahvS/8AdM8/wxw5ZtlGGaoXC7XPrJ0k/xk/g/hTLcq4P7Oxsg3I1RhlOoQZRrzVdzVORGl8aeVNPIqfgFWgVJhAQGZtBXsUKVv/6mo+lRjhVAZWTtW1+Dr7pE12jBgekQhkyCiO7QzF/8heiXaY1oRenqY5JiWCJ/FQo1dMc4v2QoYmhgutW/b6H34d8IDehfnI812Fq62MaUrBSKuJ7eWi/m4bOEudYgKk5rTfOILlsiC0t/q0xFopBhim4cW0HLlgyE+wb/iY/BGZz5y+OH7Q6d4n8xAxEJ41C103UxZunimcevmc+kM+Uo6RlsjWJ4Gj0hqTlrwvfv+tK38D3Qzxr0M7vcTz756HfXXwTZWqLmQ3drvXWhdkHG9Ukm6aoICer3vqflHTEgJlSGMGK2w6wAkH0ZRIO/+RVHNSKA3L9iEVWC7ExJK+FUkNnIoBFx4+FrNq8eGw9qVNmU/I9fQbJmROpxp9Ns4fuP8Qz+jLAO+jnSw/vpQq86cFgKu+EKf2+EX5ttrT1ibYRqtMS+7FC9iNcH+JsBKuH/rT9OkKSg9NYdPZuvDYqie+5AqGPbBpsyw51aG0r1l7qmr0tRWnpTfrLcYeUj0mqTGc/qKCta77ccR2aQVKrEiN23LwWgcOI1Bi0oBrNYl0R1pbj9kWi1Ev3YxiBfxYmMlIYkQ/flPi1Moz9CzwiDMJ4uzMczibxCsw+Hlj+t7HodvtD/luR5GvkVpjhmRNLESA904vCWqMSYFN1yGBPWExE10pGEkNG70zR3onebEpY0RZkYBiVgUQn4v4YnFEWTEKbG8UE5Kg96/RqDfr271S97pd221tq3rbUFRdm8v3Xa36bCT/wl6oCuwJMta2evyCj043J9TMQc9BGI6vBsJawMHjcoRpfpY7qaVWzerxFhgnwY+jUB/aoq0C/BZRnmL5poTZPxYruUG0QtCfF0qv0yCTCPqh9+XP56K/Jhs3m4rqcsBLzSGBxs/sAIl6kSjVlhMbtaliv1sBWLKrQSMt7xB+QEAcPWBvq/+HkIteb2QH8IEV1h69fb8d0OxI1kQe7vE3UxM9afpqqzKwppEHkHErXAmnXY87FW32eg7w3Zi6GNyhRa0aEGN9uqN0+8LGkLw8C4UcPYVg4UcLKuf/Ob9WqrW+sfXm+Gy0SJJoxIrrPTNHsiuYiRiIKQXJ2IzT9fMdAvflH/tazjhS3E7x22YzsdlaZ7i6mQZErJSL4vCfzL2h4xJXHFSLHs62AHeQq928Ncz2bBCDxOxc2Vf/Y+ZTrTiI9K6vF3U3hLXH0D7kX5kat6whE70cvOKPOJgWCioKA86qX8pUC0+a3m3yqFRHAgMa+cYb0JOxLu+fXEtQjnakMyG9/GcrVeBZoGoK3SW8uxbeNMHqrlMLrWs90G9O/Jlf3rBp6Z9akeL+blvE+ZTl6HAfH3+FG1AkGh4tvuOAqTJ6/pilzcwebfNr/ldxB8MX9xByNdv546+TI6eLIlP8qgf0UeEy6RX2ZZfqFlqWWeLzX8XLtX7X6cH3ghSRUvJ6Mt0IfUyj6skFFmWUa1ZclkliVDU23JnB+4tBP4uReSRvF5csDCyNJ3yOfxFPShIcjPlHsTFr5YFu26meu9E8yRsgXngiy6q633fIS8YtmyaNB3Et3HDuxZsyG3ucLirNnTkgturlo3PcIo6j68NxRallLu9bW5bYtzW3WGmksmAHRLSt+anRqbyk4OhzsSvK856OuT0NdeYRz6WunLIuhrsOqhc/KCdAB7vO3ULUE6HCUdiOYNvgrWm4KpebCUe9fOrRp01ReXszA4uOD4QoX+ApmoTG/fkHnP9Fip3LfYjazAlIze/MdrF/q35PzulRc7OhbL/gig27awhIyu2WenZ0bHNHX4RO+Igfz4MirsECug50XQ82Db1tqOWvd2o3lUnVMij6hHfDcY5K9jA6H76M6/eyQU8InL3Nvy4K8q5O052I6eKA7QxAi7s1CgskqG6rFoY7RIZQVvno/G6kNElWmhcCcbSdCBvmNX9XiN166jYjbX3bWZqgp9M34LUVS6uas7lxXpurW8aSQi9v168mp1zaRcLPC36gzXY/HGWA8iBG3eHI/Vh/kStEJRnlyjXj86fh1viHEu1929QEQJPfookkSy0N2dy2HM2yD9sC+XdhzhcgFmDxy0+jvi8EsEHPTTE78DQL9oJEL2clh5ucD9wiHKk4WAPomfE/aALNZ5HOSCD0bGhzhndmxvb2KsheA5L8rXZw4VwGiTefUhbyIPoQu/Vny45LN/YB+B9AFLUQmf14oxZ0BMjgU6KR4eOwFGPdLD69bwt/nT5v8iuk7gC9X7KnlkrBuyQsTDeAF9Avqchz67Xp7PzdVjTD505VpdduwpxDXie2gF9edPUrFU6rDFASdW1M57fYDbR297SM0n7Qh+7uQUIeFqLm+gfKVP57tZvS7YKER5p5DWM5Ljy1C8fcsfRV8RZqEP5nIeE24RZG8NfIuFctfxMuTJldRumcb5q+vTqFav8SaoGQ5W0vNzlXjPkGQajN19rD553aHxORlhYidzRp8EeZim7R+EIMPExl6HL7jV1lQClGi5D6AvY8mplnpHHlnrMNOk6Ts+lw9PFm9fLyJkJhw5RMVoDDNa2mpj5WBeEnEiCjfo6LUZjQU6Tj7I/WMAxvZt9JfCehhbcsXYvFJUyC37mLEyOfXSrfZuaBjMhTcx8VbLZBHdp6ZGwmtWD2yNmGHJLK/R+GtcnNJcjEEnlMH9YUwlZAymul1s/cENsc5j7x2GDMuUWCXb2Iu+DIbfldg5GN8YVPRSkmIxmsCiFJjtVTAxtpY0HIuKNGlB+nrt4y69+sjRgyBAxqxrj69rbG/5/tKH8HP4QWErj30eh6wuT8ZE/Hc8LW84XN5Tyj3/wuHWHI2/cDPnMu8Sjoo4Dyh7Y4fWaarDBQ2X+guGMlK5AltbigMbtpWHFiYOI+2K9ZAbEBysZae377jnjifs/DUJRsSExgiQ5DAJVqmJ00WKabCgGYNhmYaHT5wNm7fsyEe7rNjYVeeSbO+ruhgWTVGkWrq07apbdy1+4I7+8um6hRVlYDDO98wipu3qp2h5zN+AMW+DMc94fL7hpcFcW27OxzcOWJ7v5GvthYbtUV6oPLS223rls9ZeuYa3V/2PeyWpNKCanVpHynT1tE7CkH4QpiVEoPnX5O23nmLxO55QzM1lFxOLGWsOG5QGP35XR+T028F9rC2VEcXoxWcMUSoGYOxF5Nq9DYiSfCzxwQFFwVb9dH/l5j/U0Qfu6OoaO5bQKN+uiFnnPZvDG8K3vJMG3nkLG2O37BgOUznKx/3JpUn0e/ijQhjGHfTG7VQ8F/VKLd5OBM84P+my0lwojHBmrE/BYlzEAFof0efyuhSJqOEepXlf816q6xTu2bM0KfywdU/Jl2VlGSB9o1nFo+qfM9e7k9I3lsEonR/Hf6w355vz/DbobnSX0hNWIxE5VrhsP/mS0JhvlOUk8pHNsT910Q074Ql/rGu0eW/z3uW7jeuQUX3ksv307+mjt/9atDRq3fOi8Xv3nGvOrxg/ugvdDTwIcJc8hR8TkpAhys80MjEMPAit4I6dnkm0OLXHiAB+IZy0cgLfhXo82sBZ3AWe3byjeYcHtOfQuTYt+s3HBxYCcDpWUtFZdA6bKoVmtys9SRMYHfplm2V6IN5mRs23JhbLOFcd0BC1dAmrA6MZdM2Kvnf4fU97fV8R63jvWp1rcUxvYNVW0O/0HcAfGmfCFygn9I0rFfp2Z4ttEoePS5Ih5CrN25u3Y83EMLKzaikGIyuiX7b5p2chLc7Z/NfVV2IzSBu9KhYNiyJtoJrDV/v19Q9B39dDrJaeLme8eNcWJH/nc3iFdMWMB9M5ztH89ceDfAV5o+JVU8l7uBChR8pQByYEqx1DCnoAPUBVE47e0ZmSomggONurqft7sFLcpWq9s8EBHJFSnegZVVMZVodnqCIiMTwzzF8CbDDUOaxWSXlnXJJGrqTBfVVJiu8sk6o63Olhz46lKfxzsENeA4u2+IXHq7zS7wpXBDqZLRCHu5DHptqHHN+pajuuncC0b2vSTG7tF0GAYmq8pMoKAe6uVidDosTEyaqqqkSR1Z7xTopwoXBSFDf12nbvJvVEkZOVovKbX+om15gyHFe5BOLDym/+t6kDUSqk7Mglso7xPD1YbWS8BSIVXhDjneHm6xXEvP0yme4VltFYYS8Ni6grJHqgeIlEuc1bKuXyB3V4vQF1cO1QFb1LVy4IduzYxYJFzPBVEQZNKNRThS/rSU/WVeh7plW3CUccH6Q9kuHAkbp/xAcW3mnvRZgXMOFHmiprIFKRr9kFkSKma4paGk+J6NoJsf+CBmjneI+KP2Ag4zf/AfL0DArkyX2YH/ulUkxycz+hrtRBqqB47/BoLP07yBkLIaEP/DEVsb2c6vnuWGvUGQg35EHgCpypVT9HIhEtBOB0N7rbc8D55px+8CBBz6Bn9IM5fjZcVDg6Uh39H5BvZqSF7i6r/hR+VI6pGHU1+EFekbvQp6gwCH3qiWu8Twi83Yt7aRS6COBQ7XmYwc0E/yISIUgh3Qs6oOich2r3oLuVnpB2fi307SNeXzlmF8MaNHXW9mIBazgkbu4DROdgpvSNZJrvaMePRhfC6tACfyWG18e/Ix/GYWGTsBf6uHt+WII+dnt1MF6J47WhSHsvSjst8fRf8WbjIPdrF514VReHMt4O5GzIf89MmG878d+RCml/g3zIaL4tnTBVZiTTX9P7O1WmEmSwI5+NSUgNf+4KZrhIjVf0t781k5IlWTIykiEjapqveQh1dj7xhNH8r+9/b3Bz2rT6esAm0m+VjIWpuKFuXG9WJoKiRLD27ASTZMYmnjUgngeHJ008v0lmGpPm7YyDdFkC7Jybw8YfYXvAllkkpczx9f2Zpe+Sz4Mc9gvXCq8U1I+94oaTBxdLBPTFKg3PFSHe+SvF2hsLeYzmNBzXYJC+uGqev3pbC8M8hvtkp73Il0dM/134PD8shxm/ri0dkGMm771530sa6w28r//Qfq3UiUWcImb2/rkAEdX5+7ImScGhDgeF7LvvD7umxgxesX223dTI3TcXJEyZuy9neE07S9q995epqNvHX/9wOFxTIE/uCd96axQ9OhMM/0yhrg3He7KYvpkY1VlNpBLt2PjKlGiINPXKjXGRAS9sJHA4LOOFqQ5DRG7RWaXb0JSKjPCmIF8MTVMYkglttmoQ9Dil+hewE8xBShDIBfB8r+N02BPD/MtKu9ssHAC727GlwsDuAoCN7ff1ula7glYpt3NnP3NeWVpqleRBB3zCp1LmOQ9ugFzFQsazQI+CFvIjOjqZzkqiJNrJ9Fe1oZQawMimRz8b1MHwPnOMAl4E1Ghda349m1A9yxNN1vyNYTz4kBhnjoI++AR+zGj+KpP+o/cZ+YGkYQ+gXaa+sCCBmNDm9WZ9NCgqxrMT3r9FMPGshhUx2L/aXNigesZnZR1kmAYWZ62eIAJePbeAlWTUUljUi2vzS48AVhzzatFhza+hZVrrCzkSgGn4blf20iTCwNMi3E2fx4QyYfIUMs9/EyERRwJuNkv3fF4TpS/sptmsG4ggwje79JvIPv9xeXyzgm5EN1INKNrDzYeVLaMy3mDX+Tt9ZJovVrD2/VcyQm/7ew1Xink+TYUgEdBVdcsYw5KhA11eNa+qXpx7hDwG/Z+C/ueifj06w3t9AeMG2mSH99LnoFlvNSapNZZbeYrtBn3hH/LeNL/X/B4xwJ7C8Kc1oBxpDYjklgfU/EnzJ167LtTFR9V8ffP1+q9VlXfPw8AXGZB3no8IsXY9x6/5cl2MXlrzzfJilWeYkIrjXHtOCFCQv0imHRgvV/y94TTZ9aQiSzt347zMX5iEZQOTwYqi9PTva2ztUWQ80Pe8oife9AcQCDdvRl0spGId6KnY2y+KudKWvs05UUTF4nIVlOPYtDBN/9Gba2mALtSPTY7Vy12Y/PZzQZRvNAQD62r9/i3mhnaYaMiyml9Hb2p/eJmzRVvjDH4x7yeMZWdrLEywvLF0OqYq8bHUL+lb9285n7Tz0g5i7WXPMP18RR+/+nInm3jO/FP0SbIg1PmaliD3D74rj5fF/SKHNyfKe+rYXrDwN4iEk35hZxVqF0BeI8/05CdVQtREKIi0k+84qYJpz44EgmZBPuciO5qAkCrh5HxhWr02Eo8GpZlJOZFcu47VpqfqDNVRjfWOqyIKHWbr1qQSbHoGqzgTifr201jah/6NHBBmAJl3g8y3LKxZnVKIx1srvPq1jM48vEccC+dahLrOw2Deb+WFRH8nK+DxKohsiO9r8VZfhIL8o4TdSkM790BA12REmGHZIzW+nfbcA06Qikow3agb2sREhtnKrj2qxD6SBBBeEgz0xoF+JDsshR7bvh1N34LfC6n8/EiCIp2J69dhiZ0/xqg3GxV4GBHD1vBD2Q3dCHi9JCmvyW7sRtRuPodSGGU3JV+HaPNjKENI88e0Pf7z+Ot4TlglbBeuhvEf3Tc3lRKIt/YHVEQqbmsBuOTv2PWL2RwdwNggT0TLrwry2S//XWftul3I2/ZeFnjhPgLkgNSyQvvlP57a8Sdkg0nBnhimIh6iztS6g/q8fqBqDuVM5up9vYRKOKMh5Kw6cFsssWvCGBwEB/q1WwsE1l4d1oglRcAQbzfTybd1Abxh0nxVKdHnDtiB7bdpBM9pNhOd7iiSFLppVzy6b2bWQShY1UppzWV6d5GfqI7AM/dNH5DUMb3Yj4YYNg6vztcqGTuPNhMzGPzX+THK13k3/wTLiQBfC3LbdsvHzquWltCX0Mc9O+/htdRI9sJbtab8Qo9nFwCUrX93RcouV/qWX5D09k7XNgfMpEVXRcRdu0UK/rS4VyQoOF+ErEy3hkYLiZNJYHi3zHcgOehyGOFS0SiypADAjRmLhdhsSulUZTUrpk8YxVJg3dEAr7nsFH6E3o1MwBXpaYnjextP2rjg+7jHj0eX/hA/h5uCIqSBpyRsyatRVIG9eW81EeDKmtd3x7uDP6+EdiSL6VQwlGr+yEQlpCqQ15bgxt/mc0jfxl9xk6liKtmsx9lj7zCs5pfhYc0vmyaq+TLcv/Rj/CH0YcGB/mlejst3j4m0RcO7uwr5/WAlEBFjmJlMguD3z5ihtzPjq98kYJbG154jjM+JCR34OfTXEAtWQ99HhyLI4/YeIA562x9WVCS9eMAncCb93cLtml13uX7R21fgEH4uOryvI66TSDBxxdCWye5wKNxx1drK/pR3rGPfcDS5cbhyfGOyuXbhhB7YNCglN52oFCb1Ibc/m+5Sa9FsfyXdNzRUHqrPLh9xA1gs1zduPs7fCDvXle5bJaNrN22s9+it9XgNUMjbIR+NgVxkblsVz3CQsJx+MCR6Cch6G6soglI6kTWCZl8z0/x3pCLN4AuUIfZNoo1UUyQRbX18U/PLSNEM5nPSn8H9/0LoFHpAXoVch4zbzxDaKY4k+Al7BbTNg3+BT2uCxQKnh4cyPCJJmBlEbH6CInXBQX9jWd8RLZsq0VXp21OveZB3QMXvhEQFnk+bd4vIuOKMCQbg2nTHlRu6Hu5Cqt+Xr0BfCkKXMAR96Sta3O5Ern7UApiuZSReLqN6qQRf/J+lLuWL4fDbddk4/5zFc2kd7fl8WmS6cpaXc3M5XgpF9ysPpSXcfCO6HlE93ClrKAJpugw8+YOHLE3WpNUEiNPeT+6lMiZoRkLWtl3WR/BHSqt9OxXuBzvlfiS2a4LcA/YD0+VLq95tGM1dhsHXLv1siaIi/hcYj/R0qFVLSHsvH4ZBJJHrcRKHz3x5NRt//SS6VQPXwbUR/k8k9AT1hi3pFI+MUVkPTI/gHxiUvevx4WFdRqLW7WjD598NR1ASdQwPQabHnLFqK8f9MZpDTwqyEARZ2hD7cLuvoMAMf6jT4N1pmCaEI9FGLn8QZZLJgLrozW2awW/8JBMZ88YCbAbG0s+5+vK46w2H/+IvMPK04g3GkZg/b9vOD2FQ94N01u+CH5PTomTOzxmyIe1az9cHTfZDDmvGy3MwNOP8j2b3ojtBgh+cWIVMUduwcP7PwOtxfO9s86xhoO0TfQFDYh1DCzxuRZc+jO9H3wGccoQ4xK1wwNYZ50qo6s1EAshi/gOQi2bz/jGIyfFoLlfO3ZetZrJV9Av4GY9l0WPxLBzMNe+rZrPV7G1Z/os/I7L8jKDQAc+Iuo7/jODyM7ovPK39lEjrIeiXrQ/v9R6TaT8m1npaX+s53M/P4q+hU0Ifr/FxP2+0FiVeWHjV2q3lzYx6IObtdvTe9rMxELXt7kFqdIb7jk6XrUCl2CXxVy2JBzY6cmX9+qlueaKQV84WB2vJQFYF25kvqzTXVUlK0cT8NViv1TO01FNSw14ucA4w9Aahl89dSf4aYF748N4/1HqJQms9ZXtGI4Xae8lwfmEflYiqxHs2ZNKdU9O5Qlc23Teqgn9JWF9fLvV0DE915dANN22PMcnR+3umLGtk1AnYkeNTCUJFqSEOTMUCvaOO08bATpDNN4GdSE+PBVfKhoum3JZSa0Hsio1t5RQO+f+SCZdXzpsxbHHkWrW9wO2CAEsTbGoHUAmyek4B4mtsmgslZbigwGUpMYJIyAhAo8ldIUrfKMpMn5HIPLTpzmVThpuXffEW2RSAz+YDnJ4piztFZNnEyYKoGXNMc7iQcIts0sZPiApTtjK6Q/IaWJLb0wPi9+rsWfx19DXAGF5D61S9+BtoxWsPD31S7/c+t7w+L0W8lRxcKA0D32Wa5+/Dr7liTSzRPzGb7UnVS12gFwsZvcOTufXj47O5kXkJayKQmo+Yhqmbf7H5esUsjzuBYtdYhuRsee1Qf3a4nN08khWZt8bxSuCJDwknQQ+ruR6CPgX0/qUqvIIoc9LndYXvu2ktdeTBN8IjSKb92yOT/lIsf+IT+JFPoRu8FtQeI7SataqFXE/3+im3N4Hi8QYVmWzUKqSjMS+SKFrTMKIdYWsi+ehbdbP5bDn/9W/A702lIpNsLZ9fWGCi/pFS//0PGNqb3rA669KxjUU7WtlJMLo7OzTvOsmSGTfRwOAVlL/raHEfIVN96TCS8ehui4jiySrWTXPfFNZtfcMGkb+ZZd0MX9qs6HML2JaYhm8a1XG+Xxen+9OtGqNQBpv9gVAUtoEO15bD3lwJoMMKZ6k0yt7OpNa/w7RsjLksXw/Rku2K9uWIP2+4onXj4EL3uvHV44U1xShkXvwljYdnC6tnxqKF3p6cFYgpkp2G/9dMGGloODNRmoaGNEqswK7h7pnVky5vZ7gxNLtmL47lusLFcCKJ8ut3Rbuysm1LwWhYC3xNC+T5WxRwPNcVKoYSqWwpmx+A1pJtUzfGcbKy9Df4W3gNYMYe4QTg5MG9swNdiKxY9+iNodrai9W2YX9+21+BPYnAttuv2br4RGN58tx/cQd89VOtVhkIpPIJ205GMotXNNi6UlxURH2kP9ETC+W3H21opY0mI7qhaavx1JFZOSd27zg8pvRuah/t1cKdwfzOxnSndxC0ff4GDYLfOjSLVUZ3/gJPUcZGp8XBeL9spusLQUNSG1PiQJdpJVMdyfzY+fWHRCyPTLKBroDGDxVGZQptupJ0sEtx0s37DKaIFDOVMf5vpwLGyoCxPwOGPQP2MZa1ROznmz4rrXhe1BJGC3Fz+VD7H3xs4VtrY0V7r0Uhlx8xn2RbVjW2SE9aqnT0mIGlRiDeSAYJNj5v25/3vidqKf792FFJtZ7UZpOZzf2O+KSJgF+PrNtYZYYuEikw3SEXYzmHiU9b4oVvRALeuJAxZ+JZ5tm5Hyv4OPgcROlljyOTIvyd7i/RYXwnYoRY5+9/sd4hkTBqMObtVx9Z+n3IXY5AvHaFDFijMa32dKUjAQjalC9UqFf8hEL03ynFxMzK3tDl82gm3znTle5sftPEZyyz+dnmZy/qjvL/NPcdgHFVV9rv3tf7mz6a0UiaoplR7xpZXbZl2ZYs27LlgrsxNtjYxgSMMTaOTVnKHyDUUJIAm4Q0QoJjk8aykJCyKWwSUjabEFI2WZKQpSVLip7/c+97bzSyBTFk/4KxNZp5894557bv3Pudc5yPkd1fLfZVZo7A83Xw6kvledb5yImjN0/di/+M18Kc7gdb1RK5qqsSIYuU6CKTO3WuUpHZpUo5uTQIxCKwoVWYVSb8/tZ0KhZPYo5ck752FpFeBuSRrIqXOTIZp+6hMpXYKk9tJXm2otzBN7CVWHQI8THANvDIqdtmlas21U4QT5rIlYmWzSrYiXhVEq5iSvrUXiYNMkGfyrpzpyMEpcyRjXK3Qg1dLmhhoTQ0Xy4tBCNtXUQORThwuRiNipcfgH4OYlgvkd9eAoTesLShYSnpULQzyYnxhEz7NSEO0t/4Y5sTic0J2p+ILPjbjAYeWIZpITZqyqXKA7pCbISCHgwCWwitRe8+FJzdZuiV/qZ0PFg+eM7Q7eMVdUKsXUH267O35rbGAb/eWt7UP3hxZb5TRTVCOPezWUzntCWR87vsOibEJGDN6SByttVlq2IRlQE5AxQj+OnGDI1jorZrQikcrOrIzi7rP/tY4XGSXYpDgMAfF1hr/zL0PtSfscG8V4LAT1KBDzsCHzPQz3mDF1S0EHPgKdifAfCpicevt3+PUf/v30Bulllxajk+iV9m4mDdRlg3aqpTFaa79wRicGI4wjmTHNkCIJmCwC1FLhbKRkjoD5UdPyhpov2Lv1x0HariWL9gP28/B64xdOV6npt6zMTzLHPq84ZhIIu8xC8boiRcd1nH0HWAS/34uusxr6kCqIrxVKcqizFR/Brd9VeInzwtZwQ85VqQszpZEdOLfoDmpNDXkQPGqgsoGzhTxhWKIKFqVIFEEdvP2c8LfpZDVa9P/aeIzpDvJ4Jx/fWwIPL4+uuwH2S8bj9zSpyaOEM0GC8T9s/xCfwS9NCVMF4Gk36Hl8EQT4QI5ZoQuipDNj589MSprehJ0zmaBEM5r2aS5F1k1llI57KrRDwEsJhj7dfsPxy4DSmkTqI49QT8QAebWjDmJS2TGR9X9Ses3pbwxz6i6vZ1jUq5gTlWUtPwCTT8UyOL4AP0Qx4FdIMTDh/tHjksCLyoowAPkMoe5622NqTJQjaDiV/qG2gLszJAmGYlYSCsy2K2mqUAcNkYnql/jJkE/YfAvcEO7mBoqzAu6G+AVSjzdxlgLXFhhkjk5tQTIq9zPFKRcuBW+zXurVsAvyDaL5JEhLz9ok5Sch46OmfhYYETpKn+t2oCsMHiUwL6CPjnK5nzwAbrJ+tVl1/tbMgWgTn5QyBEEKZuGuvmHYQILktZKAn5KXTS4Dpwaimv0kHkAXdvrFgd4vyAJDa36Wp1LgnqW1VlVSKL1UsNwKKXquBHwRuWJomVyVpNc67xZYKnXxPM+N79jnN5BYnrTNwdrMA/CnDljZqaigU1SVVCwbjMsfqNj3HlVpz7zI06y8nxYEhRJS0Yri5eVmY5l32Gi1vl3GPOZVaZ8tfv3v3Ep26DoaBe/oA/ef3FdTnab041Qb/5EjPALASbDQ+lVW+/qQmlnK1u76DLY++R8FZ3WQwF6YE2JQQYSKzAxI7VAjl75YJhfELnpQcexMvGJU7ColwW7i5cSEphC5/73FCfAt3BuKC2aj5J97Z5c3htmK+dyL+X5eybUaE8juxffzzIW+Oj77tT5pAqajWNF+1tawZEyUnCOauOHlKwLrLfxihgJckgamio/2Q9Dub945j7DLerUMDXcEudfuHp2MuMgY4jg1WK64dAx2jzO4xt6AUOrKTA3N0jpZo78V9U736Udmp/ZNNZgzMpIyo7ofPCB/8R3c8TfZblq1FL9zaZkx77LPjQLWER8K68Cy1cRMYKt3nrUHk1uv89Joe+MYkRK0iGoXZltR9rWQydfHwJ6uGxbty7fElZrEnmDGntavbY5hyoLzybcdRsOtq1BC1ZoHHP5xGvmrGK0G6/sFMI0jng2/gkm2RW0LP1cyYXR0DPCPUkpznCxHOgjpTjozrKCyZbMgQaeZpjLOkminBd1M4OUliokOKCFbDWT+iHB/tx9/zLVY7zf/6r0XiLyBl6Xf4whslRHlvW3z84/i6BlwXzBr06Wu6zYJrv60UP6uqPfpSs5ATN6OrqUNGyZmx/ZdfOQ7x19z04kexUSWp3Y9UWVBjaL8AKKW3ezHWD3nIqf+sdldlBGWYJbZ7gV3VJROjdt1i8IuKxRWQxRTcgWOxeP3wnbm8mebWm7bGEclwml80pA3t0Fs9tC86RJ9lij3gWYT3eNT3jnd0Gjm/eYbCE40q6TWdHdocmc/KRo/2Jjec8BEuByKO+1NwRFkxyXUPbJoWXbk4tzSLcf4YF9MMdHZmxhlr00UUom0H4h8lOTRB5sb//lsUNNctgctTvsh78IIZ7Cvbng9F66AO8NN+q9qNbbzpde4W3jh5DVnU4gHqT7OrVaDv20RiZcsBvPwZ8sRjskC43Gfw3sEWqzw1liDhDupiQsNRv9Q633hx2fFhf2aeoAS3WWVXRGc3VRn01XRi8y+W9gr+1rqrVfa/AYvzjN8Yjfx2MSUt3K5gVKmLxJiMq6GNN6aolezUUDzTQ30fbqpgSXSPMAtC1Mqp7ew6z4RP2Lem5QhbfALoYZ6/j1wR9Fkzz1/VnpR7oV3+Kxc/hjzBRej6QiWuYnu2ArBlnfGecRY4Pc2QqJopzVG/OWdFIUoxcFj+nSezUflGRDHw1J2nq1EPvRXOOIXVqnARu30Dqg07th+VawWvfa3/lGFJOiPp/cdAcvAA4VhV+2vOOZiQUyJtCWOD+a/o9kHEFyHgSZIwBBpdO1MR1Z+8O3ErekUVz2yAzQOGIE7fPR8IcxR6perfMe6bQuUKTycZ+CmyO7J/Z/877NRYJx6667N326yweCYns1EtXX404VoV+92P7Z0hUWdwqYfwuS8OXXUEMjQ4exD5dQHsLhda+vax9TUDl2ee6uvaIqh8fPIhESePR72lJMCr7DpB9PvgP/SB7V61zdka7QrWXXIekdMxQPBFOIIMV3VxOETFYzAKWcghM9NTspGSYXNh+YcdVAV5VueDSRUibiAtswC/MWX9+vyjlcu9pD/B7gqqE1Y6Oz15axisV/Qu/uzLp80VPNkIv0xWRFcsO5jqibEDoXt+f1TCS9JYLamvfH1asRZ0dvSwrKkEtfajV0WE71aGW7qu01cXw9HoXCfNhlwIieH/SDqHNnRAB3dB5wK3HQOY/gVLfVuiin5XzW1GstzEggMcjBr+499kwVjje4rBZuX3wIqLLJ2r1o35p/qUvc1E+CnNh2V92dqhYxq2iGh9ovgguFUlJeMQmCvcFeNYKNGwuZCJEoTlHa6YWcYFz5l+iISRxogTIcmfnIlMrGdd5ZjXo1FwTKznTpH9S9HTMTSLRD7My3fV2m+YtTmgnSVNIucmXlszLcYrC5eYteWkyJ2FZ80tN418YSoVzB6rEqXef9bD/ZESx+pp2REWYpMMiRmJ0R1OfqbGhpV0bsqYqWb27o/bk2c4Bni1qmbU05jGhF+dzIc2JDnjpKGlQryvSP61vY3pXuZz9qys2m1hSg44FYqkDScnPCQqx08uj85Xw1AfP2hzoGVVRRSyMdp9vKRHHBrLZsydlhlk+4BgKTS05O3sgwHfNgO+ehHVeOF5F4vCqsVhMK0IOORx+ClGyoxUUbXVBT4jyM+kmnZc4RAg6KLBohUaURse+ImMJC8a2reM7MwldTwysiU3iHeezCFCtvnmDqk6eY7CyIupm/oZ5Jlbkef3HfBiLGslt7rs2Pqp8zb5YJnj16ac4VhZ0Q5ewjr7+LQxg7zOfY3lcsWFB0NDFaMPu7qjFmanhq/ycKoj+y3vU8AwdSexNhqexVH5HEefEh4SFOhTcYsIT1wSBglg8rcp2OG7QQDGnRXFTOYyuyXzU0WjrNnP1fqJn+7mVy3FjV6Q7iqgB7iOlqW73sawgE87vR+fpPMfLY/L9CU4nKV95Y+OaNpRZiJaDYiL6yuMSoFlywAm6s+v21u9rAs9NFFDbEK93X+mTBFmy7hqJymqUnX+jT5E1jo2NbKzwkzkMsNsJwG4rmW3Qx89dNRZzsSwpVOQmy3NGOnVHiBloES9qBUJOAvnaWitQK7xBSiOlc4J4JpjLIi9DjFMRrrBDu0Br0vTRbaBkqKN/rCK9cF0qxQEKk0whUejUOXFw6PxoR0yRq/IdZQ+p+kfWTQoV1TNg3WoN3TmyMrNwB9zEXDVobruCNxMXl/PlF42G0pnA8p7+oAxQYHwZQXUokPUNkwMUnsN/6j7WT4IDSQXd+etnojsDP8PLge0LfPN9g5sjwisuvj1O8e0WsNGa5Y2Gu+/sOLztHqh1otEcgg2Js0m6Jiqxg+PdN3kHTzTvCQY/h84CdH/ASxY+od/3ATWT1/lskiD+eap/SZWul+0bqe3LV8fRTWChbz/jGmKXrh+ujm/aDCo8s3Vrp/6xh0QOvciFJY5FmzbGzS23hFnWh88TLMzroozXriCYX7i/TG89J3dhfv42v7qx3wRowE/bwZKsjf0YPH/Beul3gEhIGVx+kveLLP/883jfaiud8i121vKVp0wYM1cwNfT8aUFbgKyDGTJGsiX5FlsJQ7Bk6LgFinoQ2RKk4cwey4Ruk9BDO+IQdjobI+Dk3ndlf3zRvjLDKP+HSdS+Inu/rt/zoLr4Enin7JLF6oP3TP0TeN1ZOepjfYIIa7fql9IHD6i6/Yv8XFnU1UR6716RW2rorBTYNh/W4vz4TpXwlEWdVVYPZVuackOrFfbfBCstRUzWMCWBRbIlVmLoKpl+mE7ilWAFx9c18XHQOUv9+f5GC3t9Ilyki9DDCHdCLOY5gbd80zTsYImughsPAMpC4x/pT4zsK4PJ4brV6gfuczS9FH4vu5RoqusokY/CLC7p9f5L9oGK/52vJxs/Rr3/0GFwhndwFiv7t83PX5gDHVkQnWiYa2qmGupTacFqjIdh1WgJEuWaWmCGbAsS5Uhcyg8A18QZC+ZAzY0BcthXzi5jjl3BaXi+aU49i+vIViIvI6xqHGFfafAPVlGA5kuB+/yLex+J3IeeK0egbehOOtxu0MC7RUkSp24zLDwx9XH055jIKlPfVwhjkUevOfvNc059An8bL2DKmUbwNpaT/ebxRX3N1QkLcSWBvCXk1GKwY6AY9+mRqwLTZUgNWsTVvTbSnk055Ro6UayhkJe2j68KcZxvwdiucKYhs/E6H/ml8LnLPz5klS/ffpD8WNJYEQsYNT0yxnJvnZAV6nrhpfFc90R3b66uC3f4kDl39NLwwvC5i5YGODly62b6unvq8x+/fPtEKDLk/kAPGHCHWi2mwR0QgpvBywWb6rp68nVdvWRPuNQG1zLKY7v6iPrsW1afbafJTB2+eys98iUDbjoPvjP+HBKmc68mSiin7Nl+TBOweUEBAw7p/OztNR40BGE/y3IsDiOJ1QIIsQLC5Ykelhf1kILrmkLhdHoAK0FDZtne8nJyLQqUuxfC6JXMgFy8TH4LJr7SCrKrstlsdQAs7FOVyrnhcChUh9iwoSs4HFYUy1eJFd0MYlQXCpErVctyrlvB4oBlyMWrZOb0NiH86TnNb7NNOotkccfzOXuDNrF3HUjzgsCnD9wJY/LsrVHAiBP8AikFZWgMT7l/38GfYnTGx4SYMibBmINaPAbjxW8aAsMTol7O59QH85HEtb4k/eP9HNE44q8fUVis2k+G7N/jUfu/8s4PTkOL0WKZg3G+m/AGdqNy+5fkr/15lLB/Qf463OAZMiiPOY9mT380gsehMx6JMlMn8OjUiVkf5jyIKdFTg2dEmBRTR/SsyZZFwyFTP1NPGCTJiL+dyfkKvE80WPDRIiIld0aSBVeAw2QGs5+6Z+/Ui/x/2n/lWbzwqmBdZRm40lf79oS1q6+5BilXe3LB9HaBwqL9D1zM289ipPFT/86yuPq6UF1VTJTw9fl3hNUb/wGh0+zhcM5mtUc12CLjscHONAoadPhgpxkmj7dMvf8PJZwwBtfhk2ATl7NbEMRUzkdcUzcShoSewcy9iR4HaaqIHjeQZc9HX7CQYc8zyWHSnfDyB+Tze8gFLjfF4ZTK0KekE5ZG+UXT9w4UXzlrS/HuTxUfs9M07TuLt58633tlfxWWGq/fsEP0GQEmDXaKhclz2Nmf84ZPPHnGC7QDHn33LI8+Qwh86munTuFa/BjTxvQRLnBHlexxINuItzydlLLV9fWTghhyklRTYmkxpWV7Ha1i3VnoMjTjthv+F6cpIp849/CBzWke84L9q/WLKGDNKkFBEFhZ97XW39HRhfmOKEm6Z3/lQfAjBUkQEwdu5FkAMLLIbZ88qqv52nolLMHiLPOh7vaP4aHePsofYouy9zBzmcVgv4XDA315h0/TGgm1FY+vRAr9vSMsVKRYzaYHmyZfFEmoWKjQSXT59dYtoICkcuFG/8SyCVX/Unhd5CFA9va722NnqPTdsi/11xVuQIquqkSvH+zbh1RJ4FFZe3gTNgRRL9sRw4Zi9SbO0O21+H1tffcglFBNmteP6Hc36DeXcOY9PmkoQvLOO6EhTtFKejqBPQWThGGaynW0k+1pEovY4aUdJZvaXYah4diOMhLvyOE7nuDIWSXOT1TdcccdoNEnVJUgrnTtGMGMBcCecmVQz4Ii2qmpsq1laLth3Pu+mz5rGjzKLqu4iR69qbL9Q10/ciSVXwSAfl60CyC6WhHUM17/IjosZsahfy0ZbfE4tiV6tE2fvXktRRsK5KdnwsnQGytEyjeWKrV7+x7JkkQdlxXCO7ZuVfXfhZbDwni+rtvvmU011Dg3OUO9H2y5ULIMieVQrBNaDDBmYFkg6CdY+0ezaonSQ5Xe3qCDP8msJ50I+A3KzRbcrXOPLR7BVoqjBQAwjFh3N1zncT30eV3MY1s9dOgvOGYgsr+t6DyLABabU6fQj19EPT2XoZnPMmEVl06EgxzZs49kyQxBjnRDdCcbERCUstpIbprseaooqxxulw1nexrpHTdUVGCM/3Lo0EU14D9WW/YfeUFXyNYzurtsyDDtDLqsp6fTOdvfD887RHXLwFirjBP9WCcG7g30491TfUF8M02nvu+c5yNj5A11/qM3tTGlshDdsyBLMkH0J/Pmm+mPitK8qSXszZ44XbPYxDRcm0z9qkQkul6s5yrRe5gqphXaI5+kbY9oXl96YOQksKE5MYoxjR2dXsou13smO+//Ia/oDhmFxZIxVC+G+lYqGNnH7UdpEOM4WoLe0zxUn/aHantUoaNGQPG2xVhb0VcWqeuW0MIOBWEnrBFtmtdGriHXNvbLiObpOlWPXkOP0DgJk+yD8QabJskQ0jmnclwFphsgqJ/jFF0uV9HYaEWcf+KfFFmtGBs7KYkqV0HiJQDoS1gQfGpcQ+5aWYe/Adirmpw5VIWm95P9kWnisZvDh5QtIAkVSSLWLhXm1Xv69o8FkUgG76WcqHGACtlL9qBXTbvOstD38GclVbT/+Z1/uL8WiYog/ucrskXCJF769dSeqCSH5eJ6TWSQoUdIJ6pIpKrr/0UoqYg+mZ0OAiREn2IsFjgJpBPa9RZ6jYU1uO1BIhF0RI5lfwaLF8dDB7j0Evw5VaStPrXNr16AVlCJVE5Q0PcFBbMi/sNrXjwK8xzzOGOAnUUnHiXX4cbGkwB4gnVYkbuRYJ1hTlu2jBOxJL6fl5EXa/Ys/lecZILMImYj9O9Vo60RrYjPvTgz77BBpACqsqQemDNpOhlUaVzqdIwBtTpg+sBsd0J7JCliKOU8Fw6nMqFg0PiKIfDJ0V27L4AZtXx4MzJhoX5583C5LkoX7N41mgTnJzG8yX4Z3Hpz03Dix8XvR5LpcDBo4UoscnHVryZi4XA4WRUw+wSjanTXrl26yFcObyH5d7cOV8Jt4K3RKvrmVpiftwxX2vdikY8rfrUCvhqBr1q0nW9lJHwJ+h1TARhYOpGqDHo8lmkLmJ4P6GqeI6dIt8K9q0d27d6hiPrOXbt26qJ8vqtB/uE5l6Cf6qmF9G0J/t0Fq8OunTtBoK6Huy857bkZ0r8qjWIfdx9Mg0ambU3oELAQmyg8/WQST1R8Ktx/F/pcvmXlavRD0X243ek+VpRBiF32YbQu37R6lZOb5TeAqU/SXGS6G/sFnRcxkSDlH+ayTAkxpbPD4WO0Zwu6pSLUjTow0i0e2T/Bwu23swK0J8J3vec9d2FE9++R/XH7uIBYJKs8RnNY/v77SWAuye/04Ac+8KCI2BIZakj8GenXYfdZiCkSPpzUVsFpsgzZag6ttOBxqAPkUOXpJ4OxBfb225VbkmPVYfowASa4lUid8WAQScD33y/fl5nIIZf7mMHfQf8KPhA5P2xrjNL8GcGZlP9i8IXj0rYVQyCg2yOXbJbM4u+Y4NSomlk7JyQ1zx9L1NSFpZ4lpopxNXmracHiyjx9a2qHhS+3zKmrDRRPVkZiQV8eK+1zwOvWoQdXNOXzWO4gv2pb7B+a0MCaJNI9qd/iD+C5NGYlWYzZo1vqlah1OnzFIx55acwcVVZoMtI+M0Tog8go3BqBaUDWyi8b7OPoORFrrupeXY4bJQ2Xv8hW6jqWW7/ZLLFYk/ys7+jRF6pZReEC7dWv7h7RWTdPzm+oPC0gj78kDpMSP3qRs50J46eU8eScBKTdMs/ngwSru1eZLMY8FljwWLi+gQPlRNJI5NaCgVhWREOf0cJECH1k9ytt9SJJu4axylb/5sgxH+sHeVmp+ZutMtb1SvbFcuztx/4Q1nWyK7EM2rW3JUdyjpBkut2os9vZhPXOGovbsJTv7uzO0q0K3n3l6FTcuPWiFuGNlQ+8AwUqc63Re039/R/2IXH5HkAKylghmQhmbni/bt79XvG8uwM83mrao4F8x5zyCvH+95vm/Q+IXRaqqRIfuN/882Xv00h2HJmEzKHg7mVSPCYNbCk3AejTsEGkvHNDZDkBpAuaFlWHWARjTMZGD+erbpHoNgzFcD/EJ0DfBqpvX4dZ3IuduRXrcOs6izUBnYwJBNtQtns3aitQoq8wvXHrwQn4fYWnEB+4Z5t0392u1lVVhVEFY2W0kC6neuu3Z0Yj0YZ0dyEXWGybBtUX11J9sURUOrIhuiCy4ZgEmtMRiiSjfGu/5Q9Y/a7qSL4FPollFzUt0AWyo2r0SDrR2I2j/A0+F6+C+WOEnEvWRsi5ZJhA+w6HduRGm3rh7e24gx6wpZziWPTK4kVwCfmd5hUyUAKtiYmIQ3Jl9vKFE1cn4xxtHqxUVu7sPjKSEtBt8DmvDtY1zxewSF5HL4zyKGQ8U9lyrYFRLlPb2ttWUyN882umPoyCw03JVG5xdSP/9a8axsM3NOrpxjl56eGHDeNjN9arDQ1q/Y0fK9UpzwzTc2fd4c6AcxaiwRnTwShOOHCoEnmhKn2oM1US4O9+HqQ5q/pRH8JLwZZEperDC8avTcVI11LgLWz8wyRVSbwHLCwOrx8WsRNL7OiEV5lFpepa+lqzjeI3vqbrz3xLmbfE0cg0H35YqumaUyM+8rBulihE8hEQfZ5n+mB+8DnzQ66DpvJxDkJcKWEcdaNwm1dIzW0KEmxHI53TNCNLSBgDobBWt2APqTnJgpCahBHiOB737UzEVJ42hHHRYhVeqO31q0MYyWHzsc8ohTTAWbRlq24+iRBfl4zngl941DA+dXOz0dDP237DQL9nfRULlMce010O3w9gLCWYKFNL1ucy32z83iK9t7oku7wzU6wS8DxCTePtP1LersZ6vF30dEVDLKwGk5Fw2ApjxAvIP83K5QxCygUnbxFuSEZqZD4SyKRDpohnyEQ4+rmEWsQM06Tbac5toL2zJNidijYBIuAhvsil5ZBGubR/4LkVqYgkR/RyE7BWZVhtxrJgTHNlXfEOiZz9eqxOxqKaUMPV/ggfIfiy69Tj3BTuovybZYAvF3TVJSziy3HOfF/vbPkyA9DCVBZAGW/vI3xEk3hZtn9r25hlWZwhNYwNgZ06hWH6GH67H+YtlePvuokj2qI66FG8AUjC/rX9H0h4Wx95uNuxSzkg+Alil+7aKov4lRHaTqiRc8h9HlVMA1cJgF7Jr85aiiiHinKrIt6HjJMoxvloVNIEhEP7vr5rohwJhsShGKpkeZ4Db/Q3HKr0wXIvorShaYb9o1OMJNLL77Z/t50VUKci8wpCURTDHMdOfVnyg7sX+LD9wkoszFMtAaF474VddRYSJIO/427E+3l8z214u49FN9wjSmFJfN81gMLIdRO3dhAoqPG33cnxGi/YzwZlgH9l59xWj3k39sC+Ej/I7qeeNjkraK/NVJo0ftjhlDVS4nSmCGEIgysS5osASySkm7BDISQcs1yRYvagKslT38c8C1hGwzJoIWkytmXUf3eM06ceNXETwK1nDAQeFodzvCKyU9/BASyjP6Xs17+FZPS4pH0PcxYppP5VAevgHOInr+hWsPAtgjIBf500OBZ9hxVUhWe/5zf4p/TzliF+hl5R8CP6Qa+WdFWcxlQEnDZ0hCT8h7DLjxOLOvGuqpRCF5qm1tWDLbZLKjjqrzgSamDNWk4U8dT34546eI6kEzWvQsw+XsZ+DpQSoT11FIK58SOaBGj3CSKnoEgaepYlVMDvPeIq9IAmESXbttZh3vCD8RRVQDt2sg4uXgH/nMTPgd9I9nJrwpbs4okSypNzVFN9GjWtEs3KYFvhkrMkLSAl2399a4RjcffpvDQk6T72DPoa+oKsOuQsNjjQMb5B5S85g5ymnkZfK9XBT3VoCGmoyNGPOKFyDiIVz56u9sWAn1U7dv6lTK8YWPDsyvxFZ81Tw18LxRd17oRlK6ClD/VvOhuGmsu7INyUDZSbsmXjQsWJTW5rLXJRSJ2oVrdZisWjgpEzuEW0vOMsvBSXheEczFe3DiAxGJ7QEzddXblsBVmTxoLpAMKNysaAwzuqfU9MlLRsyzWWRzsyzo2MyzhU75uYwU0hlIyJiXynuXFOAjXDnJsKoOWGHhO//GWO8JZPNE02R4TOHQ4baV+3alkC1qILjxE+khDYMUevat6bf3ImN8WSrK8+QcprI1K+T6ZDkHCWXP71OYA1JpqRy0UHF+T0lhxA02yksJskseBGFoB3GSa1i8mWccp0AqjPMNcK7fCyQH0I67W1Dj1JEzH2HZs7XqYaz3dYMHXIrLHxnLpWceUKGcw3GagN+YNLFxKS09bt/vVLv/ttTZu2kXYFb36pYWcrz0mB7iv9oqBy/quG05bI4aY7aspF3QiObKwwJPab3wALGE83b29DWNYN3cA/fwycM0Uq4e24+4f23fgZ/COYjzZDn1laH5jGL6EzA5TYlJubJVKBS2P76e656+t62VqcwPJgMW9juxcxLgqrRDzAkx1Z+1X7jwduBdDDO6BH4wDyrx+au5h4bohv7eRYTjKS7WEhOFRor6mWWA18zY6KnN83uDjclQ1D5+oq1Ov5mvw8kgMePUVCl0SJdVESK9HYJWVqY6XgX7ZtSBBYzG/aipEq4aEtWd1qr8kPpqoE/8qWlMQP+fDWBSnd2H4+TsnRhpoIDXqctlEZ5TMta3jzGKb2/yEjrRE5AsLgPwLCNFhRNKQeuM1+FfPq32cl/F0S3sRaLEA2QxA5/kow1pU8Z/11+O2bqcROOWYv2GljT7nq+ZXUgSyu1W6VWTe63iX5/A9ZbbmReOr6tRt1cpQn6lbHz6Kq/nwnjDRVYvWNa69/KmH8ndZDjwlGbcXGhWXQacXymtubBR433U5Gnx5cuLGiVpna8batOG3DLLMHbLihO67QPSaXBGagYnq/4szk0iRhJkL/MybEn9bLv3Tdmo06J5EpvPBTakJTF3VW0Deuuf6L5frUrX+nDU8KOrFhUCez+R2NMIE1394QhSmBLSM21KdWvW0bsi4n9SnwyNycg3Pq62ICYCw+Ve0ikXZ/h0fWnF4bCfHWqdYm5MgWqsEBCGPbU1woHOnED8j2U+XZ9jLF4m7If0LlOOWRR+d0ybymNbVk61cBnub4ytGt3WJI00jZ9vJfcfYfPqCurblreHJ/I+DjLuxbIZEoGWnFyquOAJgW1F27sT+cNaa+J3Jt6Llsw1GrOV6u4WvQhfgIWsY/6WBhT592Zi4zCvosmt/TmaE58ForSNmn6Xy3bFuwJMG/S5AhfSLtvPR1kkLjqVCwrXOAbY84cYKtme3onIfm4nnDsK4I+jx/ICyj3ecRt+/ko1x3bQg0bgnHUC63UhIV45GbWMTifNPK7u7vPSILNXmMdByvHa+8+25elAXz9tra9jDqaFIEXhDQOROcfODcnCXvbB4IBHI6rjOuGP7tS/5w7dGjaMdKPbxiAz5CdKTYJUX5ahtAx/UrFo70RFhnbSa52UjVOLexplP+wThwsyY1YpLCz92rc7Ul3ZqwA6tpY+JQBXIbk1JqJ9RFCwtdwet2SBz3z0/IfG2FAupr6eziTLVggBNzY3peFu346pd19dvPlIcMxeTLooND0FV7Jvs71ITOvv5lzv5+Mh8Zk5INV8gqvutOThlqlQChC+vXxJV3rFfANVC3XYCSlg/aWBvyV1kI27/mHJTSU2ZJQ8MY8/yL6LnaxM2VS9MIX4IO4ZuRFVSyrHVF0S5JZphZCXhFeWztqtFFDarLNaB6+B3v3Z1UvRAxHHoDY9BcLpgGD+YC2SZKnnCSerdHsmkx3DlhaO9qOMglghsFTvJh3N3b1LFB4zg3VGz7mQYBQzY3iTv36LLww5v1IEZ79rFcNv/EreIQ/iHebcwLd2O9FzESZ/IfeDAYrweow9FYMWIMfLo1JDDl0as62jV0fK4kv/T79k7E7d6N1i/6JNrunnMdxN9BB5kk4DfFyceUnZmQiUTrzAgWWCLrvpruVefL/s62W8ZFPzSRVFWz6fJMavjSauUguDkVCxtHZORrucvg/ZjFvu6aTbJv6yI/fd7N9HlVJGe6t5c+neujH7eFiyetToJlXVbleGrrNeetGMjxnCb5jbprl1SkMxUTt2Y4tF1Wkb8htbWnYUiRwBUTogs2mTxv7VnonDNLp5azV+KnmTjTxBxgfjdY3o84PIgEbmgO5oVzkCxtRqLML94Izvoip8J4JwMKwdRyESPJgiTvgbsgFpHy3Mw6Bbw0/ygjCNw6huMsUndeXMeIYkD0qoS3n/Zt8g3MMfhc7zazfnew9Q2/JjMiK4tnfF0YW7t2MI6Z3bt2nLdm1aKR+XMLbfW1qUrLYOI4rpK619PHgyX2dKurtBPHREg7u/DO2XV1O2VlehVOWiMhwqLuKHIFK6bP5BxcT+kbdGQ41T+yrseDPmxNDJ13Z1W0Kn10cnzl5Niqo+mqR7sW96Ln9n72QiHIvev7Bv6vD777e5Xa1OeXzsE6t6BB8MsKyCIIhiFE9+TbW7Tuvq6y8rXDk82SP0A+gXYzdGH1SK49HtZ7ClJ9H346mLxt2/CiVUsn35mqqEi9c3LpqueuqYsG7ZGLPnc+Ur/+7nLzoy8cP9J8f/cKCeX4kKYg4eOCIF7bmG2L8oZWnq5vhJVQiAaQMDk/jJEgDAy318QaNFFXOWMp6a+oFX0BnwRMLxw3p+sb0vwc3vZjI7LAEPPZ44+SfO0PfQhx0IJkK51n8aeds/yHrs6RM/FaFKvlaY0/775Bb9yR8gVpN8CJOkgW3Bx9WJU/9BDhDRx/VCJVjHkBtZpoiVOMCPO19q9qecE9W0RfQHuYkHe/AKF/OZK6SdSIkGOa+KGHiJSPHmc51rnhHtM+7uZRxo6Ebi1f755ERrVY24dK5mxBUMIBul2m5CjEYwnuCrKCBTaZgiMcdoo30fsxp/rY9aCzz8vx6JxbOQePQQExohDgDT/+yYjOC8Z59vfs3brviwYv+vFfRlTd2Gl/3d6gWTPuFfDyaPqczQTEhJ2tTGjwrMFLvha0F9WdZwi8ztmP2+cP+/E/8obVYh+zv77TgFZG4+jDI/5iDkqH8ygcF9wz/xKu40x642mURo+/4HEmpROEL4ln40ueSZOcjR5Jcpme+h0+jAcoh51yECJgLv+Aw/CNEUbKuebRoUGA4yI6dpUZlFUeld1wIyAm+wX7F7wq0/M47x6EzxQNig7H6LT75NoxwS+wfM24Y+Y57qK9+Gc/P/PONRj9RH71FYyZEs6+CXJyjpwzOTynk3VOZypRXV8EOQep7ZUiXz8UVJyZa6WJVfOqY0gk1YmTYRkEsn9hv4B4jerofTcMOgZNpZhHrvj9QHs6FfJHCp2lN3rtZz+/ZyEoOON+OIGR/eg9r77CMKW6kT5rELlm4YLNQow6nfrlxvQdwufibzAVTJ6cJST99MzbTSsXcbOckqgAt+x2DLXjNICPSpgr+kVRkq5MzE8hnheOHmJh1WcPHRU4Tn/1Ly+gF96xH+GnReEr9Re2Y5njZfEbXyTD+YvfEEWSlhkdtjcBlLA/GuE/fZLq1XLq3ewRGD9zirkP2/2Fdkq2DESIRCG36ANFAKU5Mwgvon16JWlDezchgLecsBHdc6AGYcxdeSAUa1JYjr/84MHLeY5VmpouP8yBOKb/CLoRoTSp6GY/z5NqbQhz3PrVaN6ym0UJ47XwH8aSePNtaM06jsPkxk5dqpWnnsMvAm4nvAXDqdfuOV/sjGy3XtXwNuIn+6tJpsYf+1ghunzs4W6s6rWmxrMjC1g+XF4uGKk6RE5/34F8lREJP6VyghrsW/Ov9ms+zQhK7KGDEstpZjDcPcaCWVH3szHezVfbfOo3rB/aktSPb8ComLfJYJ1Kk0SOSuQTcp5TTk/j3ZRDHe39LFzQ4QIqx5lwHE9a9rGR/aKAHiErnoQ/K7NV7fevUWUOxqDYcs3WijDLydW3YJllBXt58aJk66oDdWB0QVNnXoSfgpWHI+cvHNr9jE9O3RuUWXuZzCN14lyd83Wmb5qEuZtnZ17m37jEENAntaBzUeamleQit0aY14+F435vXXiDPux/s5775l3WPc95P65jGyi/uhkwe6KYl7TICwsVX9F9f7+TQjBMq9gT2+Ic7SalDLHiq6Bg/JKQwxTwJfEvwVMRXSYbG3d5Yic9vtiEIijo3wVafEcR7Gr4VUSDDqXN4wI4nMY400LyeSX+dg4GgL4ailRw0++/eaKFJyUsoCpyWAk/cfFTfOiNsyrYjRhddxVmESz3nPuRMlPeCJP723kUEMnKWHyH6XzjJE94qR977+kcbpHw+bMmebLH/JrzjiZgpHBOe4NC38F/ZsqYHmYdtPeS/oa8OR3XQk9sIjMzCAQ8houz5TId8erA2kJ7q6/0Cppwcubn+F7M6YKks1MvISzxqq8kz8DApgX1bX1ze89fySFBlfDWBbVt+HBPe+1CS0bl0x9izZj5Ef4TUk2ZfQ79OxZ0Pzp4EMETePT7qf0jG6JVjZneloCoBCR9eH0ULcnUJK1Awn7d+yiRLHm71C4xppdZD3YZH2isMVjWSXn2BkkX0N9tmHPE0MzUDD61mJoBX/q2LfMDUQ5MZ25A/mLmhqn3vHXbOPGQJAY0DraRTrQm/Szl7eLZeQOFTtbJi0W6E+HcuzGQFIvS9Hro0NC9C1FJAjBKJBCmniAZsWQdJdoaFPBEWaT4xMpXdN3+VXujn5wc/0FHL1cuShmawB05OmfkCO8yC8iRqp2Q9JZmDr6u+qWkbugtLSQNh1iZ0Ut1KKM155ortVKeQegMooHvb6hAEhbRDF5EaoC+LNIp6+BV0OTN5MfbBdN+kQR1CQ4HgT/yzu6RIxw3Vf0m4pNc+vZh/C38J/CTPgjy37/ePfvIzHL2QXgSHiPIPat0Nlp5wB+l+YqnmR1tNIdBBW4rYdrBOhP0dmLd/LvUFwulTBQMz/zEu5tDZXQJlm6aN561/2i/fuAWpJCTE2Iv7XVrIJTMDNCkwXyTb26yoRWLnAATXCFZrzXm6WcadIYmrSLfwPsMrmZIBqjp92cxSVeWloIyCjamMsk+iY2i9SMNraqJyhMLQy2Zqmr6XkeixVKT4eRY3vLJARXB1wzMCK+SAxdx79623n08OXB5VYCFRwv444MVghAZbAqVlyEWJnOMrmFROCZEfeUDlYIYHmwyLYCTGGn1vC5UN63FvCpKq/xNYcTLAV98kKb5nbulDPzoufO4RiXsiw9VRuC9RU1xHYtSUzxfH2wog69JYml7ljEfgvZ8YIPqndM4Ew3PzTyn+f+iQdfI4G3OE3ieh3XxJwo55lGQdOAW+48s//L/oyZ9RXxVYC1WuPwgPR3aBy27V+TMv679v96oHLPCbsEn2d/CPEkyji4kscxdDbXZVIWP5M5ERf6qw4kA62e9fEOMm+RRcH+K03wQnvMScxdcugV+UFZVtPDpv4hI/AuWdYmbeppXJBF3T33GwMMmzf/o/CSVB3APAVL2T+yf8n76NdZ+9U8AXH9L8g2h+MKN7JYNGNYXFX2XoBqefXbqspgoxsTP03/vw+g7MKnJAtq9E5AET76BzoVvKBpTojOJt2xiFhOd+5obqqtiOs0X6hJFMtM0kVApT2RmplB+mh5DAIjrBbYSysj5ki5zWJz6E1YJYWSAFRVh6stRoqYBSOg5y8LznQSinzfwuKTJHFwqYtXP2z+1f4IIecSPKgyME6QwA/fEP4OqlDoiyDB5f+eRWfKKPjB9pR/v3I14ReO37+TRTGzno/mKq/zSNBadBnGFzghBdbODU4pEPRgn4BYsgMMj2r/866zQFB9SiYsPaM6nEyojwk9BY8wOSUvls5gGKp86A3t6okQcgByOzJAbGgyBlNMI1JNF9eCxgZAnuqIPPIEUknvUhaGiRKURP0xxscRjcKwcFMqLFedcyZwq4mMv32Y9s4PUsWuPEBnddMF0/iH7/ZTv4RTxpoTvaipjG006U0BvNwMnfpfJC0boW2Maz2tjm7v7VVEzRM4aP2D/skvXu4xB+fF/CU597a2n4/w3RTfMjwyHMRuu6pw3aYoG3JcPLy8sVwgEhknI3L11auNbS815pq2ShnvWSk9andreTtci031HO4WdbhEJwgBqC799W53Qu6wB8fGvBzlRh0mjv3vzmA7u5di3QobAm5x/7AAq79Kn3vvWs7d+QwCfiBgEADa5tzk5r7MqzOLw8EdMQ1fCK9onZN1e8pbzmLKwvv4IfxPW1wZmDXMV4PmL1y3oyxhsCddLaIs4+a28M36vnzl547PotIT6zuJKM5YV62g4mRUSMy71QrhOv9Y50J7Qx36z87IQdAMMIrOGKGesxp7JMtVYW6j3Z2RRN7AQuuyC347p+IoNCzKL+5cl/MmUucJZPed2GumsnhsdyftSSSvXyLGKvn64erR/NEWuyjeydAEml+XV5PLBJnLZcgmuQn8QdaG25WKscODfg8Ohz22IpvJ+UmMyX1HeMFeHGRCHL26pFVX78PxNlTUtKseVL4aFMti12uRYzmxqMqHZO9OJ0B/nba6sadJ5Xu/IwBobnLPK5DlWb6kPcFx8LBGe2QY5ZoI5DG1w4eRgIaGwTr916Uten3VJAqTTtrmN0RYO/B9pAnzCGP3tBZcHJGTogljtr+9eHVX1lX2NVrUY1JEUuHzXC6NG9H/W+DDX17buiyAVzNzfUl6R94sc9tWkoi39cR5F9rXWCoa95+81O8GVj1Bc2UD9hP29GQO/hT7Peg5qyUk9gMOioT3YSFCjE8V0Bp7M5lLT8V3ts7acG3hV8hGMil/vPn1UFNbSUdHgo6OC5Z1RUXbOwnSkrr+ax8lqxHKiWZksNkcUbViwSdZNfzLY3+IaP4rWDc/dmsdsMuSXZDVVmXdblDTV/E4r2VgTtuALQ40lLU0HS13zaYMlG6SDpTLWMA+mQZkNX9wMg2Xqz/M2CVZtmB+aj5AmsvOHOMttL1gk528q4ziUSA/pDT6ej43RN+dtmRvhhurjAEF66NXloxXQ3nNWg7MUljC5utHiedoLSto0x7wf2vSizoTHszmbMYT+HzWpM8oOBEVMR5mvgY6y1d3To2z3r0eNqav/7zQnGX7NF0ewrIr6QEuskg6/QK44/FrqBGPqt/9nG5LOiStP1dD8741MJ+VU983paMmJTv73QjfubD27EC7rNIfhbAO2TvMP0DNnFaRlLyhxCLx8+44eDUwH0wd69Ha1N5uYfauxWf7T9DjbQCx0miL4J2cbfDVVeZouBFsdwSdYk8kyG0hu6wb/aTnOSlKcFTOceQnOCKoaQA4ny0v4lRamMRUdNp3TiKrgpIg7q4xnH9XR3rYu3tJwQ35yQtW/WrfmQzSnRkemjCT2rK+dmBQ5dfu20a4PPSRyvyS5z7y0YBqiJZPV1UPZzSQtGLZ/JVi9g+D1sJzQ1ERyNrRvx6ooWP11ZZaICm0um2XFCM2CVmqXapoLe0G9hT2O9t/Mg8a+PbOcTW60t2IS/JqbDy53IU0HR0xCUqU1k2RwKv7rS2/RJqR+3QvMS+gTTCUjHLeK+UY8ijpJvkGIGzRczeE+knp++QqYAvWOLpIgozYBb1RrYoFU+LskX6XqvNxdsHX9u/UVGrhIOV3qps/5T3QXeoTpgufkS2r+dRY63OjTSAlH1Ymr7qDJP9JNuEOcLq3cpUngMO44B0uKxIs4UgZ+HislMpTJNPROrEkGh8tioqBhLpVBDxi8uH37YFtDvcYr5UnTgGEDFgzaT+nqbXdkx9etBRnHxy3DEjiOCwcdHsPH8DN4A1NL6vP6yHlVNwq3hp1ib7SGPd37jhGk1o36UWubE1qWhnUIbYomY4B5NSxrF+6LdcpyeefKScwqqLyha1H6+EDhrqeq88iAtQH+53b/CKRBaAKNE7YG+Brg7r7vXvfMsPrUn/Fz6FF6ZljrnGF6YQMkloCmgqGcUi8XF7GPMB0QTgh7/SjX7tVBciIPptP7kBAefNwXM7mRYTniExQexef5uGBC9q9rzpkyK1Xp45tOSFUxKxodGJFVWa9gM/06HwrAGiT51rdlTJnTyzQ0iNJyFXrUMDSdb6wLpuZY6SBWOVU0001JM6xqrT2VLf37sGWpZjDfYFrRqnUcZiWe5+GSlkQgEPPXt8Rx7WOc7o3VX7q1O0i+4r7av1G7g8y7tOx7soOSTGiXSiA6B4ecf0m8YvKNS3UgDfnt38N49JNQRYREWUSmrtsvO//qlmr//g2rc0xdY2j3wThoaoQbiXJdvSVZ5Pd1qrxhpj4xWn+1v+5v1eI4W4XepPTG2Wj0xtU2/nrpm6hE9FmHT7J3MZcxx0CfY1esSGKPC9iPO7yaGASrkUJtmObYJdOnwbZ5FcYNTAFam5ecdTrqBTx3L31FoYQ4OV0Orx+TPo0oQAvBfbYIMie97062B6/cdlIhQRb1O+paVrWizm6SkFSMtlbh6qZxmefld14ajDV97CMw6j/5KREH+SC6Q1e//V2shORyUxWMeWI/oVWODMdjWzbDiwu210oRBfWO/QNGbF+zzKJI5OOaIHLS6AhmP4XzLZMSPCLYFIjWRNADHxahQ4UX3LktGMzKvMCJYm8B945dg8Hdh/k7ws8xu+hUJVR0l08mAVc97efcaXlsHKZlSVHxwbL5CcBaKMmWxxA3fwh5fciJnVnrxBit73uLtQsMFPEOucgU4hYZ7CQYN+3SsaHt3kYNA3YpXvT4ebAYcOhb/9LUIgiakcshzMVWqhanjI7npaD8NgsafA4nz2mGIYfO23jpOyS4AG/ajPVa3uIEJV29LtgeObO2gWen1TSuZuPaJVHSN6EjFvvlWRa9yJLoIvdXQrjL1jnTKxgu0A6dsb2z2qt9sR1t3sw1nU3xC+PGqyVUpz76KIb5EcsPf4xDlem5PNjs2o3bOB3Nc8pffLi+HnGXnXX9i6F5W+MrJznocNrEspFV7yUXovl8vg2E+JcZ9S+ccbuXOQS2uXTfmgjNt+AMqna3YPkAKiW246JtsFcQxaV1pt7y8EWEBB4hk0E/niBjSw6rtx6NwNL77LdRTTWh6FspwZJ30kl6ZLgQL8eF4cvBbqKx/yDO589+5KL3cvbH/xtpZYpapqXIqCofqMKLuk1OE7gd2y65CHoTj7eFm8tQCzm4TCYfHF+ZqOyBCVXU5nRf/I6zHrJ4kv0A2p8eragYSzk2Pgk27mU2MRcT/3bLwijNS0/SzznRpCUBa16UAC6UlPhsdzAo9NDUNGCHRcCpLxAh/q5D1UzTQzDA8Ww7CRtMl2St7sSf1uxvJjPoAEz2+/PlL/xa0155KezXJR/n42UeJSp1fVllJb9osa4/lMyw0ZE9BLwDTD2wlyTolnVeUyNhAHpDu+NzytFN79Yu3x4rpPFCAukjFw3Lu/f+E28uG9NFzto8xwlxa8mF/EJWDusIE3C4aBFMGoa+bAkrkiTGe7IA5HFlBousieNxAmP0P/YcGUKcgTGsUMragfzGfP8aBf/3n2ms4KfBJ3uJuQDwz/KwEyuYBGBdTE8yW6rmoFN2twdNY9ig4+i49VXTpeGCzrLb3g8j2LE53NEB7mhZR8PGjdL8zOb0aS7N5BUBljWX9lYNrlmXipoiOGVl2ayub6/v2r5d1f+jau4HP6Bpjz6azKiSjsri69cBGPYN+u69T4SRbK1YyFuhwnluRmdwa8B8WLlwmbXA6t1QZopt+aAmcU1ZAu4H17ognhq3rRe8eIxqahH5LHZ+zMvv7Pa385hLoL/t3DHH8PyaCN3K8LqNe2LqBiogL+33WfdHML3zjr9AHMk6xGdTOFT0lJw04D1zTUMvE0j3SYgGII62CEmbXndZv//sO+PvdPXI0Wvn5lvKBq64B/23ib+ga6uuBLPr+Hvg8ggZlYtXdgnQjaQeMwkOtdW6OrQguLynoe2s+uOYxUsqRrV3VGmwoJj2eozVXct8qbTVRfvdcYrVLoJ+d24vKuaY96aykpcDyAvmpTGpp2fP7vAawQ1WrkPegC0xu5c83DP6Cm1MrVFGhgFJ3Kfm1b27YVLbvz/o0ySBFI/nEZuumn9+eNqFBKvvG2sPEzNv+F/xhOiT0JNPgaF3BWt/9wI4kxXBMkOEKQ7wfSKhfZUzna4DfTG2I0YmMlXGLfmgLsgZJUrKbBiTfdVO9m1qNWws7Z6g5t08atYGofdJgudZtgxoRjX5FjZc3iUC2x1kVpD8lSLhv7oVjUHDQomDTGx4Zsb1M7Yj3GVIFGb43PiEbt/WWCeynKxhnErSwNrHQpPhfH3yzC0IZ7wu62lZ1VTvfodNJidXgre9pg687YOCVWjjkEnjqUhaD2of2TpvOA+YanrrYRcZon0bomF6tcLXZMng3N6OVVqLAePjoPca0HveTL1z7hmU46K5xZydgeUssS3ujH5a5zlzY8JR/gHdzqareRaTMmLxRCQAgHekpW3lal3/airDgVelo4qyqlhwxj5DcSOCpOUfakrN/9nz6hW81dHBIqSKfH0t4DHeGltC0q+3tbM8ST8hNqZx6f6CPr37QPLwky5A5h/S8PWASVlGhPmHJ3V8m+taOtpCbfB3m/Pf2V9HwS5cRa4TjiPi97Y4nzP/G9pDPRF42qVUXU7bQBAeBwjCKhEgtVIrVd3yUpCMEwMvBIqUQiNF4UcQinhDi7OJDYkd2ZsYnnuJqheoeoRepFfoGaq+9PN6C4TSUmhW8X6enfnm8+zsEtETo0AGZb8t+qixQRP0Q+McjRuPNR6hlwbXeJSmjU8aj9EL47vGeZrOvdZ40rBGP2tcoGf5RxpP0UR+VeNpGs+/A7MxOoG3DypLig2aoW8a56hgjGk8Qm+M5xqP0qzxXuMxWje+aJyn2dxTjSdzR7ldjQu0PPZV4ymayb/SeJoK+be0QSH16IIi8qlNHkliNEcuzWNepBLGCi0o5ODPaJMExco3wFsDnj4sAWZBFiw1hW0y72R2aBmojhWuuCpY49QETxdRtBH2LiK/7Uk2586zxVJpZWGx5JTYpoj9dsAari8CV1isFri2edPZWWZ1jwes4vKm6IKtDuoDUB/RMRJtQzjV+YE4Oq5sA+5jpU196sArwqto9zscoIpPCCA8nSN4CCXdVoUoK/E3WRduclXDQFbDqC3Yol1iZXaZdeEyyz+w3BJ1CI9IbUWoyudAl0OrQBKjhbg+5hDl9dU3pMUfKK8lbAEdiij2w4A5trPKpGzxvgw9P0ABB469NP9QVfdrJ+seDZXyrFGiho0W4eD26BTzOd6z/VlHnv9tvOE8Z9qLD/lcz2chY4JMqRqmKhSrnRng2YTlVw8x2gFDV/XQ77VND4wJW7pb8VBUA6gFlKiap9GZRwezqyoV60x94KbKzZQaoaJruOIY7aIiQn3tFfPWEENa69t7yh5SNpyXQdUAf1/1xAmeqe2qHlxlrNCewhKnxlQ7IqGnTEWMGGzpTvVgi5ErVly/KlyE8iqU/uk6sG69D9jcWpIkdpdL75Sf2zh+6/N33RE65gwmnlmyOMtMfOmxfRGLaCCaLD3QbId3xdVRtk3zwPPjbKkRtmTCI8Fg6PiuCGIE9YOmiJj0BGvUtthuTwSZ81bmYLFrx9HOyHQs4wPud/hJRzClg7NqZY9xWTY9KXvlYjF2I78nYzv2O6ng4m4V1XpQif9G+KD78yfe9G6peNptlNWDG1UUxu+vtt1S3N3qOnOTyUwqwFgoVqS4Z7vZ3UB2s6QpbXEoWtyKuxR3K+7u2uK88sKfANnMlzfmIb+Zm3O+c87c744ZZdrXv6uNNf9z0TXyY0aZ0WaSmWymmKlmmpluZpiZZpaZbeaYucYxbis3Z/LGMwXjm8AUzTwz3ywwC81iRpm1Zo35m9Fmg9nIGMYyji7G080ENmEim7IZm7MFW7IVW7MN27Id27MDO7ITO7MLu7Ibu7MHe7IXezOJyUxhKtOYzgxmMovZzGEuDi6WHHk8CvgEFM0/zGM+C1jIPuzLfoRExCSklNifRRzAgWYdB3Ewh7CYQzmMwzmCJRzJURzNMRzLcRzPCZzISZzMKZxKmR6W0kuFPvoZoMppnE6NQYaoM8wZNFhGk+WcyQpWsoqzOJtzOJfzOJ8LuJCLWM3FXMKlXMblXMEaruQqruYaruU6rucGbuQmbmYtt3Art3E7d3And3E393Av93E/D/AgD/Ew63iER3mMx3mCJ3mKp3mGZ3mO5816XuBFXuJlXmE9r/Iar/MGb/IWb/MO7/Ie7/MBH/IRH/MJn/IZn/MFX/IVX/MN3/Id3/MDP/ITG9jIz/zCr/zG7/zBn/zVtXyo6jihM2agp9xoP+Qc292s1norS+uDPdlKkmQsOSO0Ts5r03VKGa2fMWfFgthZDzLm3e5yo1FfUav0NSe07xrV/oFm9mcxFCMxzRg6osTDnKi4MBYTUXmR8iJXVFORmopUL5JO1MnTULHqxaoX50XpxNKJNVxcFKUbSzdWf7H6i1UnVp1E8YniE8Wl6j/N+rCOK+bHVwaHm6uWVZpayBJar1csTBxu1IfrjWa1PlSujS0P9dcq2V9WGlaaNicq1Xpiobs5UGlU+uoNZba2fFl1sFrLTNJ6VtG8FPNSzBfEUEzFbFrrKd5TvKcOPOV5vpi9NVvQekHrhUAsip041Smoju+Iquernq96vnR96frS8TWXLz1feoH0AukF6iNQH4HmDSJReUXlyd1W7rZF1ZHLbVHxcrsNVSdUnVB1QunI9Vaut3K9DaUTad5I80ba4Ug7HElXp8DqFNgo7uqtNwfLzYHsWS63creVu63cbeVuK3dbudvK3TbRPInmSdRXor4S9ZVoPxLVS9Rforo6JVanxCaqk6iOTotNVSeVXiq9VHqp9FLppdJLNUeazZHTCcnphOTjYPySkuM6rWvkJte5sZ2b/MhNO9aT5zzfdvdVa7VKb0995bhFrYPaMl+zUS33Lx/OArQ5XuvT1F7vHdJz1oQXZ4IFJ9s0383ifZutF9V86GUvI5R5Q5k3DDyxIPpiIBbFUJRekL2MsKj8ovJlnjDqPEtPZgoj6clUYax4fTJDmSbMTJM6TkH0xUAsip24REzFUkbXEV1Req70XOm50nNDsd1HWiolYiqW/gPadWjiAAEAAf//AA8AAAABAAAAAMw9os8AAAAAxvkyTwAAAADRt3yS",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-BoldItalic.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-BoldItalic.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/latex-parser.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/katex/latex-parser.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for LaTeX. For example:\n\n```\n\t$$latex-goes-here$$\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except latex-parser \n\\rules only latex-parser \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"latex-parser\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$(?!\\$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = /\\$\\$/mg;\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext,\n\t\tdisplayMode;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tdisplayMode = text.indexOf('\\n') != -1;\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tdisplayMode = false;\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"latex\",\n\t\tattributes: {\n\t\t\ttext: {\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: text\n\t\t\t},\n\t\t\tdisplayMode: {\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: displayMode ? \"true\" : \"false\"\n\t\t\t}\n\t\t}\n\t}];\n};\n\n})();\n",
            "title": "$:/plugins/tiddlywiki/katex/latex-parser.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/plugins/tiddlywiki/katex/readme": {
            "title": "$:/plugins/tiddlywiki/katex/readme",
            "text": "This is a TiddlyWiki plugin for mathematical typesetting based on [[KaTeX from Khan Academy|http://khan.github.io/KaTeX/]].\n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\nIt is currently based on KaTeX version 0.6.0. See https://github.com/Khan/KaTeX/releases for details of releases.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/katex]]\n"
        },
        "$:/plugins/tiddlywiki/katex/styles": {
            "title": "$:/plugins/tiddlywiki/katex/styles",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/* KaTeX styles */\n\n{{$:/plugins/tiddlywiki/katex/katex.min.css}}\n\n/* Force text-rendering  (see https://github.com/Jermolene/TiddlyWiki5/issues/2500) */\n\n.katex {\n    text-rendering: auto;\n}\n\n/* Override font URLs */\n\n@font-face {\n\tfont-family: KaTeX_AMS;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Caligraphic;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Caligraphic;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Fraktur;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Fraktur;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Math;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_SansSerif;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Script;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size1;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size2;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size3;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size4;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Typewriter;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n"
        },
        "$:/plugins/tiddlywiki/katex/usage": {
            "title": "$:/plugins/tiddlywiki/katex/usage",
            "text": "The usual way to include ~LaTeX is to use `$$`. For example:\n\n```\n$$\\displaystyle f(x) = \\int_{-\\infty}^\\infty\\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\\,d\\xi$$\n```\n\nSingle line equations will render in inline mode. If there are newlines between the `$$` delimiters, the equations will be rendered in display mode.\n\nThe underlying widget can also be used directly, giving more flexibility:\n\n```\n<$latex text=\"f(x) = \\int_{-\\infty}^\\infty\\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\\,d\\xi\" displayMode=\"true\"></$latex>\n```\n\nThe KaTeX widget is provided under the name `<$latex>` and is also available under the alias `<$katex>`. It's better to use the generic `<$latex>` name unless you are running multiple ~LaTeX plugins and wish to specifically target KaTeX.\n"
        },
        "$:/plugins/tiddlywiki/katex/wrapper.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/katex/wrapper.js\ntype: application/javascript\nmodule-type: widget\n\nWrapper for `katex.min.js` that provides a `<$latex>` widget. It is also available under the alias `<$katex>`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar katex = require(\"$:/plugins/tiddlywiki/katex/katex.min.js\"),\n\tWidget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KaTeXWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKaTeXWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKaTeXWidget.prototype.render = function(parent,nextSibling) {\n\t// Housekeeping\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Get the source text\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\tvar displayMode = this.getAttribute(\"displayMode\",this.parseTreeNode.displayMode || \"false\") === \"true\";\n\t// Render it into a span\n\tvar span = this.document.createElement(\"span\"),\n\t\toptions = {throwOnError: false, displayMode: displayMode};\n\ttry {\n\t\tif(!this.document.isTiddlyWikiFakeDom) {\n\t\t\tkatex.render(text,span,options);\n\t\t} else {\n\t\t\tspan.innerHTML = katex.renderToString(text,options);\n\t\t}\n\t} catch(ex) {\n\t\tspan.className = \"tc-error\";\n\t\tspan.textContent = ex;\n\t}\n\t// Insert it into the DOM\n\tparent.insertBefore(span,nextSibling);\n\tthis.domNodes.push(span);\n};\n\n/*\nCompute the internal state of the widget\n*/\nKaTeXWidget.prototype.execute = function() {\n\t// Nothing to do for a katex widget\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKaTeXWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.latex = KaTeXWidget;\nexports.katex = KaTeXWidget;\n\n})();\n\n",
            "title": "$:/plugins/tiddlywiki/katex/wrapper.js",
            "type": "application/javascript",
            "module-type": "widget"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/bold": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/bold",
            "list-after": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"**\"\n\tsuffix=\"**\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1",
            "list-after": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2",
            "list-after": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3",
            "list-after": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4",
            "list-after": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5",
            "list-after": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6",
            "list-after": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/italic": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/italic",
            "list-after": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"*\"\n\tsuffix=\"*\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet",
            "list-after": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number",
            "list-after": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"1.\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line",
            "list-after": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/quote": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/quote",
            "list-after": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\">\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/config/markdown/dialect": {
            "title": "$:/config/markdown/dialect",
            "text": "Gruber"
        },
        "$:/language/Docs/Types/text/x-markdown": {
            "title": "$:/language/Docs/Types/text/x-markdown",
            "description": "Markdown",
            "name": "text/x-markdown",
            "group": "Text"
        },
        "$:/plugins/tiddlywiki/markdown/markdown.js": {
            "text": "// Released under MIT license\n// Copyright (c) 2009-2010 Dominic Baggott\n// Copyright (c) 2009-2010 Ash Berlin\n// Copyright (c) 2011 Christoph Dorn <christoph@christophdorn.com> (http://www.christophdorn.com)\n\n/*jshint browser:true, devel:true */\n\n(function( expose ) {\n\n/**\n *  class Markdown\n *\n *  Markdown processing in Javascript done right. We have very particular views\n *  on what constitutes 'right' which include:\n *\n *  - produces well-formed HTML (this means that em and strong nesting is\n *    important)\n *\n *  - has an intermediate representation to allow processing of parsed data (We\n *    in fact have two, both as [JsonML]: a markdown tree and an HTML tree).\n *\n *  - is easily extensible to add new dialects without having to rewrite the\n *    entire parsing mechanics\n *\n *  - has a good test suite\n *\n *  This implementation fulfills all of these (except that the test suite could\n *  do with expanding to automatically run all the fixtures from other Markdown\n *  implementations.)\n *\n *  ##### Intermediate Representation\n *\n *  *TODO* Talk about this :) Its JsonML, but document the node names we use.\n *\n *  [JsonML]: http://jsonml.org/ \"JSON Markup Language\"\n **/\nvar Markdown = expose.Markdown = function(dialect) {\n  switch (typeof dialect) {\n    case \"undefined\":\n      this.dialect = Markdown.dialects.Gruber;\n      break;\n    case \"object\":\n      this.dialect = dialect;\n      break;\n    default:\n      if ( dialect in Markdown.dialects ) {\n        this.dialect = Markdown.dialects[dialect];\n      }\n      else {\n        throw new Error(\"Unknown Markdown dialect '\" + String(dialect) + \"'\");\n      }\n      break;\n  }\n  this.em_state = [];\n  this.strong_state = [];\n  this.debug_indent = \"\";\n};\n\n/**\n *  parse( markdown, [dialect] ) -> JsonML\n *  - markdown (String): markdown string to parse\n *  - dialect (String | Dialect): the dialect to use, defaults to gruber\n *\n *  Parse `markdown` and return a markdown document as a Markdown.JsonML tree.\n **/\nexpose.parse = function( source, dialect ) {\n  // dialect will default if undefined\n  var md = new Markdown( dialect );\n  return md.toTree( source );\n};\n\n/**\n *  toHTML( markdown, [dialect]  ) -> String\n *  toHTML( md_tree ) -> String\n *  - markdown (String): markdown string to parse\n *  - md_tree (Markdown.JsonML): parsed markdown tree\n *\n *  Take markdown (either as a string or as a JsonML tree) and run it through\n *  [[toHTMLTree]] then turn it into a well-formated HTML fragment.\n **/\nexpose.toHTML = function toHTML( source , dialect , options ) {\n  var input = expose.toHTMLTree( source , dialect , options );\n\n  return expose.renderJsonML( input );\n};\n\n/**\n *  toHTMLTree( markdown, [dialect] ) -> JsonML\n *  toHTMLTree( md_tree ) -> JsonML\n *  - markdown (String): markdown string to parse\n *  - dialect (String | Dialect): the dialect to use, defaults to gruber\n *  - md_tree (Markdown.JsonML): parsed markdown tree\n *\n *  Turn markdown into HTML, represented as a JsonML tree. If a string is given\n *  to this function, it is first parsed into a markdown tree by calling\n *  [[parse]].\n **/\nexpose.toHTMLTree = function toHTMLTree( input, dialect , options ) {\n  // convert string input to an MD tree\n  if ( typeof input ===\"string\" ) input = this.parse( input, dialect );\n\n  // Now convert the MD tree to an HTML tree\n\n  // remove references from the tree\n  var attrs = extract_attr( input ),\n      refs = {};\n\n  if ( attrs && attrs.references ) {\n    refs = attrs.references;\n  }\n\n  var html = convert_tree_to_html( input, refs , options );\n  merge_text_nodes( html );\n  return html;\n};\n\n// For Spidermonkey based engines\nfunction mk_block_toSource() {\n  return \"Markdown.mk_block( \" +\n          uneval(this.toString()) +\n          \", \" +\n          uneval(this.trailing) +\n          \", \" +\n          uneval(this.lineNumber) +\n          \" )\";\n}\n\n// node\nfunction mk_block_inspect() {\n  var util = require(\"util\");\n  return \"Markdown.mk_block( \" +\n          util.inspect(this.toString()) +\n          \", \" +\n          util.inspect(this.trailing) +\n          \", \" +\n          util.inspect(this.lineNumber) +\n          \" )\";\n\n}\n\nvar mk_block = Markdown.mk_block = function(block, trail, line) {\n  // Be helpful for default case in tests.\n  if ( arguments.length == 1 ) trail = \"\\n\\n\";\n\n  var s = new String(block);\n  s.trailing = trail;\n  // To make it clear its not just a string\n  s.inspect = mk_block_inspect;\n  s.toSource = mk_block_toSource;\n\n  if ( line != undefined )\n    s.lineNumber = line;\n\n  return s;\n};\n\nfunction count_lines( str ) {\n  var n = 0, i = -1;\n  while ( ( i = str.indexOf(\"\\n\", i + 1) ) !== -1 ) n++;\n  return n;\n}\n\n// Internal - split source into rough blocks\nMarkdown.prototype.split_blocks = function splitBlocks( input, startLine ) {\n  input = input.replace(/(\\r\\n|\\n|\\r)/g, \"\\n\");\n  // [\\s\\S] matches _anything_ (newline or space)\n  // [^] is equivalent but doesn't work in IEs.\n  var re = /([\\s\\S]+?)($|\\n#|\\n(?:\\s*\\n|$)+)/g,\n      blocks = [],\n      m;\n\n  var line_no = 1;\n\n  if ( ( m = /^(\\s*\\n)/.exec(input) ) != null ) {\n    // skip (but count) leading blank lines\n    line_no += count_lines( m[0] );\n    re.lastIndex = m[0].length;\n  }\n\n  while ( ( m = re.exec(input) ) !== null ) {\n    if (m[2] == \"\\n#\") {\n      m[2] = \"\\n\";\n      re.lastIndex--;\n    }\n    blocks.push( mk_block( m[1], m[2], line_no ) );\n    line_no += count_lines( m[0] );\n  }\n\n  return blocks;\n};\n\n/**\n *  Markdown#processBlock( block, next ) -> undefined | [ JsonML, ... ]\n *  - block (String): the block to process\n *  - next (Array): the following blocks\n *\n * Process `block` and return an array of JsonML nodes representing `block`.\n *\n * It does this by asking each block level function in the dialect to process\n * the block until one can. Succesful handling is indicated by returning an\n * array (with zero or more JsonML nodes), failure by a false value.\n *\n * Blocks handlers are responsible for calling [[Markdown#processInline]]\n * themselves as appropriate.\n *\n * If the blocks were split incorrectly or adjacent blocks need collapsing you\n * can adjust `next` in place using shift/splice etc.\n *\n * If any of this default behaviour is not right for the dialect, you can\n * define a `__call__` method on the dialect that will get invoked to handle\n * the block processing.\n */\nMarkdown.prototype.processBlock = function processBlock( block, next ) {\n  var cbs = this.dialect.block,\n      ord = cbs.__order__;\n\n  if ( \"__call__\" in cbs ) {\n    return cbs.__call__.call(this, block, next);\n  }\n\n  for ( var i = 0; i < ord.length; i++ ) {\n    //D:this.debug( \"Testing\", ord[i] );\n    var res = cbs[ ord[i] ].call( this, block, next );\n    if ( res ) {\n      //D:this.debug(\"  matched\");\n      if ( !isArray(res) || ( res.length > 0 && !( isArray(res[0]) ) ) )\n        this.debug(ord[i], \"didn't return a proper array\");\n      //D:this.debug( \"\" );\n      return res;\n    }\n  }\n\n  // Uhoh! no match! Should we throw an error?\n  return [];\n};\n\nMarkdown.prototype.processInline = function processInline( block ) {\n  return this.dialect.inline.__call__.call( this, String( block ) );\n};\n\n/**\n *  Markdown#toTree( source ) -> JsonML\n *  - source (String): markdown source to parse\n *\n *  Parse `source` into a JsonML tree representing the markdown document.\n **/\n// custom_tree means set this.tree to `custom_tree` and restore old value on return\nMarkdown.prototype.toTree = function toTree( source, custom_root ) {\n  var blocks = source instanceof Array ? source : this.split_blocks( source );\n\n  // Make tree a member variable so its easier to mess with in extensions\n  var old_tree = this.tree;\n  try {\n    this.tree = custom_root || this.tree || [ \"markdown\" ];\n\n    blocks:\n    while ( blocks.length ) {\n      var b = this.processBlock( blocks.shift(), blocks );\n\n      // Reference blocks and the like won't return any content\n      if ( !b.length ) continue blocks;\n\n      this.tree.push.apply( this.tree, b );\n    }\n    return this.tree;\n  }\n  finally {\n    if ( custom_root ) {\n      this.tree = old_tree;\n    }\n  }\n};\n\n// Noop by default\nMarkdown.prototype.debug = function () {\n  var args = Array.prototype.slice.call( arguments);\n  args.unshift(this.debug_indent);\n  if ( typeof print !== \"undefined\" )\n      print.apply( print, args );\n  if ( typeof console !== \"undefined\" && typeof console.log !== \"undefined\" )\n      console.log.apply( null, args );\n}\n\nMarkdown.prototype.loop_re_over_block = function( re, block, cb ) {\n  // Dont use /g regexps with this\n  var m,\n      b = block.valueOf();\n\n  while ( b.length && (m = re.exec(b) ) != null ) {\n    b = b.substr( m[0].length );\n    cb.call(this, m);\n  }\n  return b;\n};\n\n/**\n * Markdown.dialects\n *\n * Namespace of built-in dialects.\n **/\nMarkdown.dialects = {};\n\n/**\n * Markdown.dialects.Gruber\n *\n * The default dialect that follows the rules set out by John Gruber's\n * markdown.pl as closely as possible. Well actually we follow the behaviour of\n * that script which in some places is not exactly what the syntax web page\n * says.\n **/\nMarkdown.dialects.Gruber = {\n  block: {\n    atxHeader: function atxHeader( block, next ) {\n      var m = block.match( /^(#{1,6})\\s*(.*?)\\s*#*\\s*(?:\\n|$)/ );\n\n      if ( !m ) return undefined;\n\n      var header = [ \"header\", { level: m[ 1 ].length } ];\n      Array.prototype.push.apply(header, this.processInline(m[ 2 ]));\n\n      if ( m[0].length < block.length )\n        next.unshift( mk_block( block.substr( m[0].length ), block.trailing, block.lineNumber + 2 ) );\n\n      return [ header ];\n    },\n\n    setextHeader: function setextHeader( block, next ) {\n      var m = block.match( /^(.*)\\n([-=])\\2\\2+(?:\\n|$)/ );\n\n      if ( !m ) return undefined;\n\n      var level = ( m[ 2 ] === \"=\" ) ? 1 : 2;\n      var header = [ \"header\", { level : level }, m[ 1 ] ];\n\n      if ( m[0].length < block.length )\n        next.unshift( mk_block( block.substr( m[0].length ), block.trailing, block.lineNumber + 2 ) );\n\n      return [ header ];\n    },\n\n    code: function code( block, next ) {\n      // |    Foo\n      // |bar\n      // should be a code block followed by a paragraph. Fun\n      //\n      // There might also be adjacent code block to merge.\n\n      var ret = [],\n          re = /^(?: {0,3}\\t| {4})(.*)\\n?/,\n          lines;\n\n      // 4 spaces + content\n      if ( !block.match( re ) ) return undefined;\n\n      block_search:\n      do {\n        // Now pull out the rest of the lines\n        var b = this.loop_re_over_block(\n                  re, block.valueOf(), function( m ) { ret.push( m[1] ); } );\n\n        if ( b.length ) {\n          // Case alluded to in first comment. push it back on as a new block\n          next.unshift( mk_block(b, block.trailing) );\n          break block_search;\n        }\n        else if ( next.length ) {\n          // Check the next block - it might be code too\n          if ( !next[0].match( re ) ) break block_search;\n\n          // Pull how how many blanks lines follow - minus two to account for .join\n          ret.push ( block.trailing.replace(/[^\\n]/g, \"\").substring(2) );\n\n          block = next.shift();\n        }\n        else {\n          break block_search;\n        }\n      } while ( true );\n\n      return [ [ \"code_block\", ret.join(\"\\n\") ] ];\n    },\n\n    horizRule: function horizRule( block, next ) {\n      // this needs to find any hr in the block to handle abutting blocks\n      var m = block.match( /^(?:([\\s\\S]*?)\\n)?[ \\t]*([-_*])(?:[ \\t]*\\2){2,}[ \\t]*(?:\\n([\\s\\S]*))?$/ );\n\n      if ( !m ) {\n        return undefined;\n      }\n\n      var jsonml = [ [ \"hr\" ] ];\n\n      // if there's a leading abutting block, process it\n      if ( m[ 1 ] ) {\n        jsonml.unshift.apply( jsonml, this.processBlock( m[ 1 ], [] ) );\n      }\n\n      // if there's a trailing abutting block, stick it into next\n      if ( m[ 3 ] ) {\n        next.unshift( mk_block( m[ 3 ] ) );\n      }\n\n      return jsonml;\n    },\n\n    // There are two types of lists. Tight and loose. Tight lists have no whitespace\n    // between the items (and result in text just in the <li>) and loose lists,\n    // which have an empty line between list items, resulting in (one or more)\n    // paragraphs inside the <li>.\n    //\n    // There are all sorts weird edge cases about the original markdown.pl's\n    // handling of lists:\n    //\n    // * Nested lists are supposed to be indented by four chars per level. But\n    //   if they aren't, you can get a nested list by indenting by less than\n    //   four so long as the indent doesn't match an indent of an existing list\n    //   item in the 'nest stack'.\n    //\n    // * The type of the list (bullet or number) is controlled just by the\n    //    first item at the indent. Subsequent changes are ignored unless they\n    //    are for nested lists\n    //\n    lists: (function( ) {\n      // Use a closure to hide a few variables.\n      var any_list = \"[*+-]|\\\\d+\\\\.\",\n          bullet_list = /[*+-]/,\n          number_list = /\\d+\\./,\n          // Capture leading indent as it matters for determining nested lists.\n          is_list_re = new RegExp( \"^( {0,3})(\" + any_list + \")[ \\t]+\" ),\n          indent_re = \"(?: {0,3}\\\\t| {4})\";\n\n      // TODO: Cache this regexp for certain depths.\n      // Create a regexp suitable for matching an li for a given stack depth\n      function regex_for_depth( depth ) {\n\n        return new RegExp(\n          // m[1] = indent, m[2] = list_type\n          \"(?:^(\" + indent_re + \"{0,\" + depth + \"} {0,3})(\" + any_list + \")\\\\s+)|\" +\n          // m[3] = cont\n          \"(^\" + indent_re + \"{0,\" + (depth-1) + \"}[ ]{0,4})\"\n        );\n      }\n      function expand_tab( input ) {\n        return input.replace( / {0,3}\\t/g, \"    \" );\n      }\n\n      // Add inline content `inline` to `li`. inline comes from processInline\n      // so is an array of content\n      function add(li, loose, inline, nl) {\n        if ( loose ) {\n          li.push( [ \"para\" ].concat(inline) );\n          return;\n        }\n        // Hmmm, should this be any block level element or just paras?\n        var add_to = li[li.length -1] instanceof Array && li[li.length - 1][0] == \"para\"\n                   ? li[li.length -1]\n                   : li;\n\n        // If there is already some content in this list, add the new line in\n        if ( nl && li.length > 1 ) inline.unshift(nl);\n\n        for ( var i = 0; i < inline.length; i++ ) {\n          var what = inline[i],\n              is_str = typeof what == \"string\";\n          if ( is_str && add_to.length > 1 && typeof add_to[add_to.length-1] == \"string\" ) {\n            add_to[ add_to.length-1 ] += what;\n          }\n          else {\n            add_to.push( what );\n          }\n        }\n      }\n\n      // contained means have an indent greater than the current one. On\n      // *every* line in the block\n      function get_contained_blocks( depth, blocks ) {\n\n        var re = new RegExp( \"^(\" + indent_re + \"{\" + depth + \"}.*?\\\\n?)*$\" ),\n            replace = new RegExp(\"^\" + indent_re + \"{\" + depth + \"}\", \"gm\"),\n            ret = [];\n\n        while ( blocks.length > 0 ) {\n          if ( re.exec( blocks[0] ) ) {\n            var b = blocks.shift(),\n                // Now remove that indent\n                x = b.replace( replace, \"\");\n\n            ret.push( mk_block( x, b.trailing, b.lineNumber ) );\n          }\n          else {\n            break;\n          }\n        }\n        return ret;\n      }\n\n      // passed to stack.forEach to turn list items up the stack into paras\n      function paragraphify(s, i, stack) {\n        var list = s.list;\n        var last_li = list[list.length-1];\n\n        if ( last_li[1] instanceof Array && last_li[1][0] == \"para\" ) {\n          return;\n        }\n        if ( i + 1 == stack.length ) {\n          // Last stack frame\n          // Keep the same array, but replace the contents\n          last_li.push( [\"para\"].concat( last_li.splice(1, last_li.length - 1) ) );\n        }\n        else {\n          var sublist = last_li.pop();\n          last_li.push( [\"para\"].concat( last_li.splice(1, last_li.length - 1) ), sublist );\n        }\n      }\n\n      // The matcher function\n      return function( block, next ) {\n        var m = block.match( is_list_re );\n        if ( !m ) return undefined;\n\n        function make_list( m ) {\n          var list = bullet_list.exec( m[2] )\n                   ? [\"bulletlist\"]\n                   : [\"numberlist\"];\n\n          stack.push( { list: list, indent: m[1] } );\n          return list;\n        }\n\n\n        var stack = [], // Stack of lists for nesting.\n            list = make_list( m ),\n            last_li,\n            loose = false,\n            ret = [ stack[0].list ],\n            i;\n\n        // Loop to search over block looking for inner block elements and loose lists\n        loose_search:\n        while ( true ) {\n          // Split into lines preserving new lines at end of line\n          var lines = block.split( /(?=\\n)/ );\n\n          // We have to grab all lines for a li and call processInline on them\n          // once as there are some inline things that can span lines.\n          var li_accumulate = \"\";\n\n          // Loop over the lines in this block looking for tight lists.\n          tight_search:\n          for ( var line_no = 0; line_no < lines.length; line_no++ ) {\n            var nl = \"\",\n                l = lines[line_no].replace(/^\\n/, function(n) { nl = n; return \"\"; });\n\n            // TODO: really should cache this\n            var line_re = regex_for_depth( stack.length );\n\n            m = l.match( line_re );\n            //print( \"line:\", uneval(l), \"\\nline match:\", uneval(m) );\n\n            // We have a list item\n            if ( m[1] !== undefined ) {\n              // Process the previous list item, if any\n              if ( li_accumulate.length ) {\n                add( last_li, loose, this.processInline( li_accumulate ), nl );\n                // Loose mode will have been dealt with. Reset it\n                loose = false;\n                li_accumulate = \"\";\n              }\n\n              m[1] = expand_tab( m[1] );\n              var wanted_depth = Math.floor(m[1].length/4)+1;\n              //print( \"want:\", wanted_depth, \"stack:\", stack.length);\n              if ( wanted_depth > stack.length ) {\n                // Deep enough for a nested list outright\n                //print ( \"new nested list\" );\n                list = make_list( m );\n                last_li.push( list );\n                last_li = list[1] = [ \"listitem\" ];\n              }\n              else {\n                // We aren't deep enough to be strictly a new level. This is\n                // where Md.pl goes nuts. If the indent matches a level in the\n                // stack, put it there, else put it one deeper then the\n                // wanted_depth deserves.\n                var found = false;\n                for ( i = 0; i < stack.length; i++ ) {\n                  if ( stack[ i ].indent != m[1] ) continue;\n                  list = stack[ i ].list;\n                  stack.splice( i+1, stack.length - (i+1) );\n                  found = true;\n                  break;\n                }\n\n                if (!found) {\n                  //print(\"not found. l:\", uneval(l));\n                  wanted_depth++;\n                  if ( wanted_depth <= stack.length ) {\n                    stack.splice(wanted_depth, stack.length - wanted_depth);\n                    //print(\"Desired depth now\", wanted_depth, \"stack:\", stack.length);\n                    list = stack[wanted_depth-1].list;\n                    //print(\"list:\", uneval(list) );\n                  }\n                  else {\n                    //print (\"made new stack for messy indent\");\n                    list = make_list(m);\n                    last_li.push(list);\n                  }\n                }\n\n                //print( uneval(list), \"last\", list === stack[stack.length-1].list );\n                last_li = [ \"listitem\" ];\n                list.push(last_li);\n              } // end depth of shenegains\n              nl = \"\";\n            }\n\n            // Add content\n            if ( l.length > m[0].length ) {\n              li_accumulate += nl + l.substr( m[0].length );\n            }\n          } // tight_search\n\n          if ( li_accumulate.length ) {\n            add( last_li, loose, this.processInline( li_accumulate ), nl );\n            // Loose mode will have been dealt with. Reset it\n            loose = false;\n            li_accumulate = \"\";\n          }\n\n          // Look at the next block - we might have a loose list. Or an extra\n          // paragraph for the current li\n          var contained = get_contained_blocks( stack.length, next );\n\n          // Deal with code blocks or properly nested lists\n          if ( contained.length > 0 ) {\n            // Make sure all listitems up the stack are paragraphs\n            forEach( stack, paragraphify, this);\n\n            last_li.push.apply( last_li, this.toTree( contained, [] ) );\n          }\n\n          var next_block = next[0] && next[0].valueOf() || \"\";\n\n          if ( next_block.match(is_list_re) || next_block.match( /^ / ) ) {\n            block = next.shift();\n\n            // Check for an HR following a list: features/lists/hr_abutting\n            var hr = this.dialect.block.horizRule( block, next );\n\n            if ( hr ) {\n              ret.push.apply(ret, hr);\n              break;\n            }\n\n            // Make sure all listitems up the stack are paragraphs\n            forEach( stack, paragraphify, this);\n\n            loose = true;\n            continue loose_search;\n          }\n          break;\n        } // loose_search\n\n        return ret;\n      };\n    })(),\n\n    blockquote: function blockquote( block, next ) {\n      if ( !block.match( /^>/m ) )\n        return undefined;\n\n      var jsonml = [];\n\n      // separate out the leading abutting block, if any. I.e. in this case:\n      //\n      //  a\n      //  > b\n      //\n      if ( block[ 0 ] != \">\" ) {\n        var lines = block.split( /\\n/ ),\n            prev = [],\n            line_no = block.lineNumber;\n\n        // keep shifting lines until you find a crotchet\n        while ( lines.length && lines[ 0 ][ 0 ] != \">\" ) {\n            prev.push( lines.shift() );\n            line_no++;\n        }\n\n        var abutting = mk_block( prev.join( \"\\n\" ), \"\\n\", block.lineNumber );\n        jsonml.push.apply( jsonml, this.processBlock( abutting, [] ) );\n        // reassemble new block of just block quotes!\n        block = mk_block( lines.join( \"\\n\" ), block.trailing, line_no );\n      }\n\n\n      // if the next block is also a blockquote merge it in\n      while ( next.length && next[ 0 ][ 0 ] == \">\" ) {\n        var b = next.shift();\n        block = mk_block( block + block.trailing + b, b.trailing, block.lineNumber );\n      }\n\n      // Strip off the leading \"> \" and re-process as a block.\n      var input = block.replace( /^> ?/gm, \"\" ),\n          old_tree = this.tree,\n          processedBlock = this.toTree( input, [ \"blockquote\" ] ),\n          attr = extract_attr( processedBlock );\n\n      // If any link references were found get rid of them\n      if ( attr && attr.references ) {\n        delete attr.references;\n        // And then remove the attribute object if it's empty\n        if ( isEmpty( attr ) ) {\n          processedBlock.splice( 1, 1 );\n        }\n      }\n\n      jsonml.push( processedBlock );\n      return jsonml;\n    },\n\n    referenceDefn: function referenceDefn( block, next) {\n      var re = /^\\s*\\[(.*?)\\]:\\s*(\\S+)(?:\\s+(?:(['\"])(.*?)\\3|\\((.*?)\\)))?\\n?/;\n      // interesting matches are [ , ref_id, url, , title, title ]\n\n      if ( !block.match(re) )\n        return undefined;\n\n      // make an attribute node if it doesn't exist\n      if ( !extract_attr( this.tree ) ) {\n        this.tree.splice( 1, 0, {} );\n      }\n\n      var attrs = extract_attr( this.tree );\n\n      // make a references hash if it doesn't exist\n      if ( attrs.references === undefined ) {\n        attrs.references = {};\n      }\n\n      var b = this.loop_re_over_block(re, block, function( m ) {\n\n        if ( m[2] && m[2][0] == \"<\" && m[2][m[2].length-1] == \">\" )\n          m[2] = m[2].substring( 1, m[2].length - 1 );\n\n        var ref = attrs.references[ m[1].toLowerCase() ] = {\n          href: m[2]\n        };\n\n        if ( m[4] !== undefined )\n          ref.title = m[4];\n        else if ( m[5] !== undefined )\n          ref.title = m[5];\n\n      } );\n\n      if ( b.length )\n        next.unshift( mk_block( b, block.trailing ) );\n\n      return [];\n    },\n\n    para: function para( block, next ) {\n      // everything's a para!\n      return [ [\"para\"].concat( this.processInline( block ) ) ];\n    }\n  }\n};\n\nMarkdown.dialects.Gruber.inline = {\n\n    __oneElement__: function oneElement( text, patterns_or_re, previous_nodes ) {\n      var m,\n          res,\n          lastIndex = 0;\n\n      patterns_or_re = patterns_or_re || this.dialect.inline.__patterns__;\n      var re = new RegExp( \"([\\\\s\\\\S]*?)(\" + (patterns_or_re.source || patterns_or_re) + \")\" );\n\n      m = re.exec( text );\n      if (!m) {\n        // Just boring text\n        return [ text.length, text ];\n      }\n      else if ( m[1] ) {\n        // Some un-interesting text matched. Return that first\n        return [ m[1].length, m[1] ];\n      }\n\n      var res;\n      if ( m[2] in this.dialect.inline ) {\n        res = this.dialect.inline[ m[2] ].call(\n                  this,\n                  text.substr( m.index ), m, previous_nodes || [] );\n      }\n      // Default for now to make dev easier. just slurp special and output it.\n      res = res || [ m[2].length, m[2] ];\n      return res;\n    },\n\n    __call__: function inline( text, patterns ) {\n\n      var out = [],\n          res;\n\n      function add(x) {\n        //D:self.debug(\"  adding output\", uneval(x));\n        if ( typeof x == \"string\" && typeof out[out.length-1] == \"string\" )\n          out[ out.length-1 ] += x;\n        else\n          out.push(x);\n      }\n\n      while ( text.length > 0 ) {\n        res = this.dialect.inline.__oneElement__.call(this, text, patterns, out );\n        text = text.substr( res.shift() );\n        forEach(res, add )\n      }\n\n      return out;\n    },\n\n    // These characters are intersting elsewhere, so have rules for them so that\n    // chunks of plain text blocks don't include them\n    \"]\": function () {},\n    \"}\": function () {},\n\n    __escape__ : /^\\\\[\\\\`\\*_{}\\[\\]()#\\+.!\\-]/,\n\n    \"\\\\\": function escaped( text ) {\n      // [ length of input processed, node/children to add... ]\n      // Only esacape: \\ ` * _ { } [ ] ( ) # * + - . !\n      if ( this.dialect.inline.__escape__.exec( text ) )\n        return [ 2, text.charAt( 1 ) ];\n      else\n        // Not an esacpe\n        return [ 1, \"\\\\\" ];\n    },\n\n    \"![\": function image( text ) {\n\n      // Unlike images, alt text is plain text only. no other elements are\n      // allowed in there\n\n      // ![Alt text](/path/to/img.jpg \"Optional title\")\n      //      1          2            3       4         <--- captures\n      var m = text.match( /^!\\[(.*?)\\][ \\t]*\\([ \\t]*([^\")]*?)(?:[ \\t]+([\"'])(.*?)\\3)?[ \\t]*\\)/ );\n\n      if ( m ) {\n        if ( m[2] && m[2][0] == \"<\" && m[2][m[2].length-1] == \">\" )\n          m[2] = m[2].substring( 1, m[2].length - 1 );\n\n        m[2] = this.dialect.inline.__call__.call( this, m[2], /\\\\/ )[0];\n\n        var attrs = { alt: m[1], href: m[2] || \"\" };\n        if ( m[4] !== undefined)\n          attrs.title = m[4];\n\n        return [ m[0].length, [ \"img\", attrs ] ];\n      }\n\n      // ![Alt text][id]\n      m = text.match( /^!\\[(.*?)\\][ \\t]*\\[(.*?)\\]/ );\n\n      if ( m ) {\n        // We can't check if the reference is known here as it likely wont be\n        // found till after. Check it in md tree->hmtl tree conversion\n        return [ m[0].length, [ \"img_ref\", { alt: m[1], ref: m[2].toLowerCase(), original: m[0] } ] ];\n      }\n\n      // Just consume the '!['\n      return [ 2, \"![\" ];\n    },\n\n    \"[\": function link( text ) {\n\n      var orig = String(text);\n      // Inline content is possible inside `link text`\n      var res = Markdown.DialectHelpers.inline_until_char.call( this, text.substr(1), \"]\" );\n\n      // No closing ']' found. Just consume the [\n      if ( !res ) return [ 1, \"[\" ];\n\n      var consumed = 1 + res[ 0 ],\n          children = res[ 1 ],\n          link,\n          attrs;\n\n      // At this point the first [...] has been parsed. See what follows to find\n      // out which kind of link we are (reference or direct url)\n      text = text.substr( consumed );\n\n      // [link text](/path/to/img.jpg \"Optional title\")\n      //                 1            2       3         <--- captures\n      // This will capture up to the last paren in the block. We then pull\n      // back based on if there a matching ones in the url\n      //    ([here](/url/(test))\n      // The parens have to be balanced\n      var m = text.match( /^\\s*\\([ \\t]*([^\"']*)(?:[ \\t]+([\"'])(.*?)\\2)?[ \\t]*\\)/ );\n      if ( m ) {\n        var url = m[1];\n        consumed += m[0].length;\n\n        if ( url && url[0] == \"<\" && url[url.length-1] == \">\" )\n          url = url.substring( 1, url.length - 1 );\n\n        // If there is a title we don't have to worry about parens in the url\n        if ( !m[3] ) {\n          var open_parens = 1; // One open that isn't in the capture\n          for ( var len = 0; len < url.length; len++ ) {\n            switch ( url[len] ) {\n            case \"(\":\n              open_parens++;\n              break;\n            case \")\":\n              if ( --open_parens == 0) {\n                consumed -= url.length - len;\n                url = url.substring(0, len);\n              }\n              break;\n            }\n          }\n        }\n\n        // Process escapes only\n        url = this.dialect.inline.__call__.call( this, url, /\\\\/ )[0];\n\n        attrs = { href: url || \"\" };\n        if ( m[3] !== undefined)\n          attrs.title = m[3];\n\n        link = [ \"link\", attrs ].concat( children );\n        return [ consumed, link ];\n      }\n\n      // [Alt text][id]\n      // [Alt text] [id]\n      m = text.match( /^\\s*\\[(.*?)\\]/ );\n\n      if ( m ) {\n\n        consumed += m[ 0 ].length;\n\n        // [links][] uses links as its reference\n        attrs = { ref: ( m[ 1 ] || String(children) ).toLowerCase(),  original: orig.substr( 0, consumed ) };\n\n        link = [ \"link_ref\", attrs ].concat( children );\n\n        // We can't check if the reference is known here as it likely wont be\n        // found till after. Check it in md tree->hmtl tree conversion.\n        // Store the original so that conversion can revert if the ref isn't found.\n        return [ consumed, link ];\n      }\n\n      // [id]\n      // Only if id is plain (no formatting.)\n      if ( children.length == 1 && typeof children[0] == \"string\" ) {\n\n        attrs = { ref: children[0].toLowerCase(),  original: orig.substr( 0, consumed ) };\n        link = [ \"link_ref\", attrs, children[0] ];\n        return [ consumed, link ];\n      }\n\n      // Just consume the \"[\"\n      return [ 1, \"[\" ];\n    },\n\n\n    \"<\": function autoLink( text ) {\n      var m;\n\n      if ( ( m = text.match( /^<(?:((https?|ftp|mailto):[^>]+)|(.*?@.*?\\.[a-zA-Z]+))>/ ) ) != null ) {\n        if ( m[3] ) {\n          return [ m[0].length, [ \"link\", { href: \"mailto:\" + m[3] }, m[3] ] ];\n\n        }\n        else if ( m[2] == \"mailto\" ) {\n          return [ m[0].length, [ \"link\", { href: m[1] }, m[1].substr(\"mailto:\".length ) ] ];\n        }\n        else\n          return [ m[0].length, [ \"link\", { href: m[1] }, m[1] ] ];\n      }\n\n      return [ 1, \"<\" ];\n    },\n\n    \"`\": function inlineCode( text ) {\n      // Inline code block. as many backticks as you like to start it\n      // Always skip over the opening ticks.\n      var m = text.match( /(`+)(([\\s\\S]*?)\\1)/ );\n\n      if ( m && m[2] )\n        return [ m[1].length + m[2].length, [ \"inlinecode\", m[3] ] ];\n      else {\n        // TODO: No matching end code found - warn!\n        return [ 1, \"`\" ];\n      }\n    },\n\n    \"  \\n\": function lineBreak( text ) {\n      return [ 3, [ \"linebreak\" ] ];\n    }\n\n};\n\n// Meta Helper/generator method for em and strong handling\nfunction strong_em( tag, md ) {\n\n  var state_slot = tag + \"_state\",\n      other_slot = tag == \"strong\" ? \"em_state\" : \"strong_state\";\n\n  function CloseTag(len) {\n    this.len_after = len;\n    this.name = \"close_\" + md;\n  }\n\n  return function ( text, orig_match ) {\n\n    if ( this[state_slot][0] == md ) {\n      // Most recent em is of this type\n      //D:this.debug(\"closing\", md);\n      this[state_slot].shift();\n\n      // \"Consume\" everything to go back to the recrusion in the else-block below\n      return[ text.length, new CloseTag(text.length-md.length) ];\n    }\n    else {\n      // Store a clone of the em/strong states\n      var other = this[other_slot].slice(),\n          state = this[state_slot].slice();\n\n      this[state_slot].unshift(md);\n\n      //D:this.debug_indent += \"  \";\n\n      // Recurse\n      var res = this.processInline( text.substr( md.length ) );\n      //D:this.debug_indent = this.debug_indent.substr(2);\n\n      var last = res[res.length - 1];\n\n      //D:this.debug(\"processInline from\", tag + \": \", uneval( res ) );\n\n      var check = this[state_slot].shift();\n      if ( last instanceof CloseTag ) {\n        res.pop();\n        // We matched! Huzzah.\n        var consumed = text.length - last.len_after;\n        return [ consumed, [ tag ].concat(res) ];\n      }\n      else {\n        // Restore the state of the other kind. We might have mistakenly closed it.\n        this[other_slot] = other;\n        this[state_slot] = state;\n\n        // We can't reuse the processed result as it could have wrong parsing contexts in it.\n        return [ md.length, md ];\n      }\n    }\n  }; // End returned function\n}\n\nMarkdown.dialects.Gruber.inline[\"**\"] = strong_em(\"strong\", \"**\");\nMarkdown.dialects.Gruber.inline[\"__\"] = strong_em(\"strong\", \"__\");\nMarkdown.dialects.Gruber.inline[\"*\"]  = strong_em(\"em\", \"*\");\nMarkdown.dialects.Gruber.inline[\"_\"]  = strong_em(\"em\", \"_\");\n\n\n// Build default order from insertion order.\nMarkdown.buildBlockOrder = function(d) {\n  var ord = [];\n  for ( var i in d ) {\n    if ( i == \"__order__\" || i == \"__call__\" ) continue;\n    ord.push( i );\n  }\n  d.__order__ = ord;\n};\n\n// Build patterns for inline matcher\nMarkdown.buildInlinePatterns = function(d) {\n  var patterns = [];\n\n  for ( var i in d ) {\n    // __foo__ is reserved and not a pattern\n    if ( i.match( /^__.*__$/) ) continue;\n    var l = i.replace( /([\\\\.*+?|()\\[\\]{}])/g, \"\\\\$1\" )\n             .replace( /\\n/, \"\\\\n\" );\n    patterns.push( i.length == 1 ? l : \"(?:\" + l + \")\" );\n  }\n\n  patterns = patterns.join(\"|\");\n  d.__patterns__ = patterns;\n  //print(\"patterns:\", uneval( patterns ) );\n\n  var fn = d.__call__;\n  d.__call__ = function(text, pattern) {\n    if ( pattern != undefined ) {\n      return fn.call(this, text, pattern);\n    }\n    else\n    {\n      return fn.call(this, text, patterns);\n    }\n  };\n};\n\nMarkdown.DialectHelpers = {};\nMarkdown.DialectHelpers.inline_until_char = function( text, want ) {\n  var consumed = 0,\n      nodes = [];\n\n  while ( true ) {\n    if ( text.charAt( consumed ) == want ) {\n      // Found the character we were looking for\n      consumed++;\n      return [ consumed, nodes ];\n    }\n\n    if ( consumed >= text.length ) {\n      // No closing char found. Abort.\n      return null;\n    }\n\n    var res = this.dialect.inline.__oneElement__.call(this, text.substr( consumed ) );\n    consumed += res[ 0 ];\n    // Add any returned nodes.\n    nodes.push.apply( nodes, res.slice( 1 ) );\n  }\n}\n\n// Helper function to make sub-classing a dialect easier\nMarkdown.subclassDialect = function( d ) {\n  function Block() {}\n  Block.prototype = d.block;\n  function Inline() {}\n  Inline.prototype = d.inline;\n\n  return { block: new Block(), inline: new Inline() };\n};\n\nMarkdown.buildBlockOrder ( Markdown.dialects.Gruber.block );\nMarkdown.buildInlinePatterns( Markdown.dialects.Gruber.inline );\n\nMarkdown.dialects.Maruku = Markdown.subclassDialect( Markdown.dialects.Gruber );\n\nMarkdown.dialects.Maruku.processMetaHash = function processMetaHash( meta_string ) {\n  var meta = split_meta_hash( meta_string ),\n      attr = {};\n\n  for ( var i = 0; i < meta.length; ++i ) {\n    // id: #foo\n    if ( /^#/.test( meta[ i ] ) ) {\n      attr.id = meta[ i ].substring( 1 );\n    }\n    // class: .foo\n    else if ( /^\\./.test( meta[ i ] ) ) {\n      // if class already exists, append the new one\n      if ( attr[\"class\"] ) {\n        attr[\"class\"] = attr[\"class\"] + meta[ i ].replace( /./, \" \" );\n      }\n      else {\n        attr[\"class\"] = meta[ i ].substring( 1 );\n      }\n    }\n    // attribute: foo=bar\n    else if ( /\\=/.test( meta[ i ] ) ) {\n      var s = meta[ i ].split( /\\=/ );\n      attr[ s[ 0 ] ] = s[ 1 ];\n    }\n  }\n\n  return attr;\n}\n\nfunction split_meta_hash( meta_string ) {\n  var meta = meta_string.split( \"\" ),\n      parts = [ \"\" ],\n      in_quotes = false;\n\n  while ( meta.length ) {\n    var letter = meta.shift();\n    switch ( letter ) {\n      case \" \" :\n        // if we're in a quoted section, keep it\n        if ( in_quotes ) {\n          parts[ parts.length - 1 ] += letter;\n        }\n        // otherwise make a new part\n        else {\n          parts.push( \"\" );\n        }\n        break;\n      case \"'\" :\n      case '\"' :\n        // reverse the quotes and move straight on\n        in_quotes = !in_quotes;\n        break;\n      case \"\\\\\" :\n        // shift off the next letter to be used straight away.\n        // it was escaped so we'll keep it whatever it is\n        letter = meta.shift();\n      default :\n        parts[ parts.length - 1 ] += letter;\n        break;\n    }\n  }\n\n  return parts;\n}\n\nMarkdown.dialects.Maruku.block.document_meta = function document_meta( block, next ) {\n  // we're only interested in the first block\n  if ( block.lineNumber > 1 ) return undefined;\n\n  // document_meta blocks consist of one or more lines of `Key: Value\\n`\n  if ( ! block.match( /^(?:\\w+:.*\\n)*\\w+:.*$/ ) ) return undefined;\n\n  // make an attribute node if it doesn't exist\n  if ( !extract_attr( this.tree ) ) {\n    this.tree.splice( 1, 0, {} );\n  }\n\n  var pairs = block.split( /\\n/ );\n  for ( p in pairs ) {\n    var m = pairs[ p ].match( /(\\w+):\\s*(.*)$/ ),\n        key = m[ 1 ].toLowerCase(),\n        value = m[ 2 ];\n\n    this.tree[ 1 ][ key ] = value;\n  }\n\n  // document_meta produces no content!\n  return [];\n};\n\nMarkdown.dialects.Maruku.block.block_meta = function block_meta( block, next ) {\n  // check if the last line of the block is an meta hash\n  var m = block.match( /(^|\\n) {0,3}\\{:\\s*((?:\\\\\\}|[^\\}])*)\\s*\\}$/ );\n  if ( !m ) return undefined;\n\n  // process the meta hash\n  var attr = this.dialect.processMetaHash( m[ 2 ] );\n\n  var hash;\n\n  // if we matched ^ then we need to apply meta to the previous block\n  if ( m[ 1 ] === \"\" ) {\n    var node = this.tree[ this.tree.length - 1 ];\n    hash = extract_attr( node );\n\n    // if the node is a string (rather than JsonML), bail\n    if ( typeof node === \"string\" ) return undefined;\n\n    // create the attribute hash if it doesn't exist\n    if ( !hash ) {\n      hash = {};\n      node.splice( 1, 0, hash );\n    }\n\n    // add the attributes in\n    for ( a in attr ) {\n      hash[ a ] = attr[ a ];\n    }\n\n    // return nothing so the meta hash is removed\n    return [];\n  }\n\n  // pull the meta hash off the block and process what's left\n  var b = block.replace( /\\n.*$/, \"\" ),\n      result = this.processBlock( b, [] );\n\n  // get or make the attributes hash\n  hash = extract_attr( result[ 0 ] );\n  if ( !hash ) {\n    hash = {};\n    result[ 0 ].splice( 1, 0, hash );\n  }\n\n  // attach the attributes to the block\n  for ( a in attr ) {\n    hash[ a ] = attr[ a ];\n  }\n\n  return result;\n};\n\nMarkdown.dialects.Maruku.block.definition_list = function definition_list( block, next ) {\n  // one or more terms followed by one or more definitions, in a single block\n  var tight = /^((?:[^\\s:].*\\n)+):\\s+([\\s\\S]+)$/,\n      list = [ \"dl\" ],\n      i, m;\n\n  // see if we're dealing with a tight or loose block\n  if ( ( m = block.match( tight ) ) ) {\n    // pull subsequent tight DL blocks out of `next`\n    var blocks = [ block ];\n    while ( next.length && tight.exec( next[ 0 ] ) ) {\n      blocks.push( next.shift() );\n    }\n\n    for ( var b = 0; b < blocks.length; ++b ) {\n      var m = blocks[ b ].match( tight ),\n          terms = m[ 1 ].replace( /\\n$/, \"\" ).split( /\\n/ ),\n          defns = m[ 2 ].split( /\\n:\\s+/ );\n\n      // print( uneval( m ) );\n\n      for ( i = 0; i < terms.length; ++i ) {\n        list.push( [ \"dt\", terms[ i ] ] );\n      }\n\n      for ( i = 0; i < defns.length; ++i ) {\n        // run inline processing over the definition\n        list.push( [ \"dd\" ].concat( this.processInline( defns[ i ].replace( /(\\n)\\s+/, \"$1\" ) ) ) );\n      }\n    }\n  }\n  else {\n    return undefined;\n  }\n\n  return [ list ];\n};\n\n// splits on unescaped instances of @ch. If @ch is not a character the result\n// can be unpredictable\n\nMarkdown.dialects.Maruku.block.table = function table (block, next) {\n\n    var _split_on_unescaped = function(s, ch) {\n        ch = ch || '\\\\s';\n        if (ch.match(/^[\\\\|\\[\\]{}?*.+^$]$/)) { ch = '\\\\' + ch; }\n        var res = [ ],\n            r = new RegExp('^((?:\\\\\\\\.|[^\\\\\\\\' + ch + '])*)' + ch + '(.*)'),\n            m;\n        while(m = s.match(r)) {\n            res.push(m[1]);\n            s = m[2];\n        }\n        res.push(s);\n        return res;\n    }\n\n    var leading_pipe = /^ {0,3}\\|(.+)\\n {0,3}\\|\\s*([\\-:]+[\\-| :]*)\\n((?:\\s*\\|.*(?:\\n|$))*)(?=\\n|$)/,\n        // find at least an unescaped pipe in each line\n        no_leading_pipe = /^ {0,3}(\\S(?:\\\\.|[^\\\\|])*\\|.*)\\n {0,3}([\\-:]+\\s*\\|[\\-| :]*)\\n((?:(?:\\\\.|[^\\\\|])*\\|.*(?:\\n|$))*)(?=\\n|$)/,\n        i, m;\n    if (m = block.match(leading_pipe)) {\n        // remove leading pipes in contents\n        // (header and horizontal rule already have the leading pipe left out)\n        m[3] = m[3].replace(/^\\s*\\|/gm, '');\n    } else if (! ( m = block.match(no_leading_pipe))) {\n        return undefined;\n    }\n\n    var table = [ \"table\", [ \"thead\", [ \"tr\" ] ], [ \"tbody\" ] ];\n\n    // remove trailing pipes, then split on pipes\n    // (no escaped pipes are allowed in horizontal rule)\n    m[2] = m[2].replace(/\\|\\s*$/, '').split('|');\n\n    // process alignment\n    var html_attrs = [ ];\n    forEach (m[2], function (s) {\n        if (s.match(/^\\s*-+:\\s*$/))       html_attrs.push({align: \"right\"});\n        else if (s.match(/^\\s*:-+\\s*$/))  html_attrs.push({align: \"left\"});\n        else if (s.match(/^\\s*:-+:\\s*$/)) html_attrs.push({align: \"center\"});\n        else                              html_attrs.push({});\n    });\n\n    // now for the header, avoid escaped pipes\n    m[1] = _split_on_unescaped(m[1].replace(/\\|\\s*$/, ''), '|');\n    for (i = 0; i < m[1].length; i++) {\n        table[1][1].push(['th', html_attrs[i] || {}].concat(\n            this.processInline(m[1][i].trim())));\n    }\n\n    // now for body contents\n    forEach (m[3].replace(/\\|\\s*$/mg, '').split('\\n'), function (row) {\n        var html_row = ['tr'];\n        row = _split_on_unescaped(row, '|');\n        for (i = 0; i < row.length; i++) {\n            html_row.push(['td', html_attrs[i] || {}].concat(this.processInline(row[i].trim())));\n        }\n        table[2].push(html_row);\n    }, this);\n\n    return [table];\n}\n\nMarkdown.dialects.Maruku.inline[ \"{:\" ] = function inline_meta( text, matches, out ) {\n  if ( !out.length ) {\n    return [ 2, \"{:\" ];\n  }\n\n  // get the preceeding element\n  var before = out[ out.length - 1 ];\n\n  if ( typeof before === \"string\" ) {\n    return [ 2, \"{:\" ];\n  }\n\n  // match a meta hash\n  var m = text.match( /^\\{:\\s*((?:\\\\\\}|[^\\}])*)\\s*\\}/ );\n\n  // no match, false alarm\n  if ( !m ) {\n    return [ 2, \"{:\" ];\n  }\n\n  // attach the attributes to the preceeding element\n  var meta = this.dialect.processMetaHash( m[ 1 ] ),\n      attr = extract_attr( before );\n\n  if ( !attr ) {\n    attr = {};\n    before.splice( 1, 0, attr );\n  }\n\n  for ( var k in meta ) {\n    attr[ k ] = meta[ k ];\n  }\n\n  // cut out the string and replace it with nothing\n  return [ m[ 0 ].length, \"\" ];\n};\n\nMarkdown.dialects.Maruku.inline.__escape__ = /^\\\\[\\\\`\\*_{}\\[\\]()#\\+.!\\-|:]/;\n\nMarkdown.buildBlockOrder ( Markdown.dialects.Maruku.block );\nMarkdown.buildInlinePatterns( Markdown.dialects.Maruku.inline );\n\nvar isArray = Array.isArray || function(obj) {\n  return Object.prototype.toString.call(obj) == \"[object Array]\";\n};\n\nvar forEach;\n// Don't mess with Array.prototype. Its not friendly\nif ( Array.prototype.forEach ) {\n  forEach = function( arr, cb, thisp ) {\n    return arr.forEach( cb, thisp );\n  };\n}\nelse {\n  forEach = function(arr, cb, thisp) {\n    for (var i = 0; i < arr.length; i++) {\n      cb.call(thisp || arr, arr[i], i, arr);\n    }\n  }\n}\n\nvar isEmpty = function( obj ) {\n  for ( var key in obj ) {\n    if ( hasOwnProperty.call( obj, key ) ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction extract_attr( jsonml ) {\n  return isArray(jsonml)\n      && jsonml.length > 1\n      && typeof jsonml[ 1 ] === \"object\"\n      && !( isArray(jsonml[ 1 ]) )\n      ? jsonml[ 1 ]\n      : undefined;\n}\n\n\n\n/**\n *  renderJsonML( jsonml[, options] ) -> String\n *  - jsonml (Array): JsonML array to render to XML\n *  - options (Object): options\n *\n *  Converts the given JsonML into well-formed XML.\n *\n *  The options currently understood are:\n *\n *  - root (Boolean): wether or not the root node should be included in the\n *    output, or just its children. The default `false` is to not include the\n *    root itself.\n */\nexpose.renderJsonML = function( jsonml, options ) {\n  options = options || {};\n  // include the root element in the rendered output?\n  options.root = options.root || false;\n\n  var content = [];\n\n  if ( options.root ) {\n    content.push( render_tree( jsonml ) );\n  }\n  else {\n    jsonml.shift(); // get rid of the tag\n    if ( jsonml.length && typeof jsonml[ 0 ] === \"object\" && !( jsonml[ 0 ] instanceof Array ) ) {\n      jsonml.shift(); // get rid of the attributes\n    }\n\n    while ( jsonml.length ) {\n      content.push( render_tree( jsonml.shift() ) );\n    }\n  }\n\n  return content.join( \"\\n\\n\" );\n};\n\nfunction escapeHTML( text ) {\n  return text.replace( /&/g, \"&amp;\" )\n             .replace( /</g, \"&lt;\" )\n             .replace( />/g, \"&gt;\" )\n             .replace( /\"/g, \"&quot;\" )\n             .replace( /'/g, \"&#39;\" );\n}\n\nfunction render_tree( jsonml ) {\n  // basic case\n  if ( typeof jsonml === \"string\" ) {\n    return escapeHTML( jsonml );\n  }\n\n  var tag = jsonml.shift(),\n      attributes = {},\n      content = [];\n\n  if ( jsonml.length && typeof jsonml[ 0 ] === \"object\" && !( jsonml[ 0 ] instanceof Array ) ) {\n    attributes = jsonml.shift();\n  }\n\n  while ( jsonml.length ) {\n    content.push( render_tree( jsonml.shift() ) );\n  }\n\n  var tag_attrs = \"\";\n  for ( var a in attributes ) {\n    tag_attrs += \" \" + a + '=\"' + escapeHTML( attributes[ a ] ) + '\"';\n  }\n\n  // be careful about adding whitespace here for inline elements\n  if ( tag == \"img\" || tag == \"br\" || tag == \"hr\" ) {\n    return \"<\"+ tag + tag_attrs + \"/>\";\n  }\n  else {\n    return \"<\"+ tag + tag_attrs + \">\" + content.join( \"\" ) + \"</\" + tag + \">\";\n  }\n}\n\nfunction convert_tree_to_html( tree, references, options ) {\n  var i;\n  options = options || {};\n\n  // shallow clone\n  var jsonml = tree.slice( 0 );\n\n  if ( typeof options.preprocessTreeNode === \"function\" ) {\n      jsonml = options.preprocessTreeNode(jsonml, references);\n  }\n\n  // Clone attributes if they exist\n  var attrs = extract_attr( jsonml );\n  if ( attrs ) {\n    jsonml[ 1 ] = {};\n    for ( i in attrs ) {\n      jsonml[ 1 ][ i ] = attrs[ i ];\n    }\n    attrs = jsonml[ 1 ];\n  }\n\n  // basic case\n  if ( typeof jsonml === \"string\" ) {\n    return jsonml;\n  }\n\n  // convert this node\n  switch ( jsonml[ 0 ] ) {\n    case \"header\":\n      jsonml[ 0 ] = \"h\" + jsonml[ 1 ].level;\n      delete jsonml[ 1 ].level;\n      break;\n    case \"bulletlist\":\n      jsonml[ 0 ] = \"ul\";\n      break;\n    case \"numberlist\":\n      jsonml[ 0 ] = \"ol\";\n      break;\n    case \"listitem\":\n      jsonml[ 0 ] = \"li\";\n      break;\n    case \"para\":\n      jsonml[ 0 ] = \"p\";\n      break;\n    case \"markdown\":\n      jsonml[ 0 ] = \"html\";\n      if ( attrs ) delete attrs.references;\n      break;\n    case \"code_block\":\n      jsonml[ 0 ] = \"pre\";\n      i = attrs ? 2 : 1;\n      var code = [ \"code\" ];\n      code.push.apply( code, jsonml.splice( i, jsonml.length - i ) );\n      jsonml[ i ] = code;\n      break;\n    case \"inlinecode\":\n      jsonml[ 0 ] = \"code\";\n      break;\n    case \"img\":\n      jsonml[ 1 ].src = jsonml[ 1 ].href;\n      delete jsonml[ 1 ].href;\n      break;\n    case \"linebreak\":\n      jsonml[ 0 ] = \"br\";\n    break;\n    case \"link\":\n      jsonml[ 0 ] = \"a\";\n      break;\n    case \"link_ref\":\n      jsonml[ 0 ] = \"a\";\n\n      // grab this ref and clean up the attribute node\n      var ref = references[ attrs.ref ];\n\n      // if the reference exists, make the link\n      if ( ref ) {\n        delete attrs.ref;\n\n        // add in the href and title, if present\n        attrs.href = ref.href;\n        if ( ref.title ) {\n          attrs.title = ref.title;\n        }\n\n        // get rid of the unneeded original text\n        delete attrs.original;\n      }\n      // the reference doesn't exist, so revert to plain text\n      else {\n        return attrs.original;\n      }\n      break;\n    case \"img_ref\":\n      jsonml[ 0 ] = \"img\";\n\n      // grab this ref and clean up the attribute node\n      var ref = references[ attrs.ref ];\n\n      // if the reference exists, make the link\n      if ( ref ) {\n        delete attrs.ref;\n\n        // add in the href and title, if present\n        attrs.src = ref.href;\n        if ( ref.title ) {\n          attrs.title = ref.title;\n        }\n\n        // get rid of the unneeded original text\n        delete attrs.original;\n      }\n      // the reference doesn't exist, so revert to plain text\n      else {\n        return attrs.original;\n      }\n      break;\n  }\n\n  // convert all the children\n  i = 1;\n\n  // deal with the attribute node, if it exists\n  if ( attrs ) {\n    // if there are keys, skip over it\n    for ( var key in jsonml[ 1 ] ) {\n        i = 2;\n        break;\n    }\n    // if there aren't, remove it\n    if ( i === 1 ) {\n      jsonml.splice( i, 1 );\n    }\n  }\n\n  for ( ; i < jsonml.length; ++i ) {\n    jsonml[ i ] = convert_tree_to_html( jsonml[ i ], references, options );\n  }\n\n  return jsonml;\n}\n\n\n// merges adjacent text nodes into a single node\nfunction merge_text_nodes( jsonml ) {\n  // skip the tag name and attribute hash\n  var i = extract_attr( jsonml ) ? 2 : 1;\n\n  while ( i < jsonml.length ) {\n    // if it's a string check the next item too\n    if ( typeof jsonml[ i ] === \"string\" ) {\n      if ( i + 1 < jsonml.length && typeof jsonml[ i + 1 ] === \"string\" ) {\n        // merge the second string into the first and remove it\n        jsonml[ i ] += jsonml.splice( i + 1, 1 )[ 0 ];\n      }\n      else {\n        ++i;\n      }\n    }\n    // if it's not a string recurse\n    else {\n      merge_text_nodes( jsonml[ i ] );\n      ++i;\n    }\n  }\n}\n\n} )( (function() {\n  if ( typeof exports === \"undefined\" ) {\n    window.markdown = {};\n    return window.markdown;\n  }\n  else {\n    return exports;\n  }\n} )() );\n",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/markdown/markdown.js",
            "module-type": "library"
        },
        "$:/plugins/tiddlywiki/markdown/images/new-markdown-button": {
            "title": "$:/plugins/tiddlywiki/markdown/images/new-markdown-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-markdown-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n        <path d=\"M3.23876972,39.5396716 C3.23876972,35.9653274 6.13586353,33.0691646 9.7141757,33.0691646 L98.1283744,33.0691646 C101.706101,33.0691646 104.60378,35.9646626 104.60378,39.5396716 L104.60378,84.8296213 C104.60378,88.4039654 101.706687,91.3001282 98.1283744,91.3001282 L9.7141757,91.3001282 C6.13644944,91.3001282 3.23876972,88.4046302 3.23876972,84.8296213 L3.23876972,39.5396716 L3.23876972,39.5396716 Z M-2.15298617,39.5396716 L-2.15298617,84.8296213 C-2.15298617,91.3833243 3.15957363,96.6918841 9.7141757,96.6918841 L98.1283744,96.6918841 C104.684083,96.6918841 109.995536,91.382138 109.995536,84.8296213 L109.995536,39.5396716 C109.995536,32.9859686 104.682977,27.6774087 98.1283744,27.6774087 L9.7141757,27.6774087 C3.15846686,27.6774087 -2.15298617,32.9871549 -2.15298617,39.5396716 Z M14.0222815,80.5166164 L14.0222815,43.8526764 L24.8057933,43.8526764 L35.589305,57.3320661 L46.3728168,43.8526764 L57.1563286,43.8526764 L57.1563286,80.5166164 L46.3728168,80.5166164 L46.3728168,59.4887685 L35.589305,72.9681582 L24.8057933,59.4887685 L24.8057933,80.5166164 L14.0222815,80.5166164 Z M81.4192301,80.5166164 L65.2439624,62.723822 L76.0274742,62.723822 L76.0274742,43.8526764 L86.810986,43.8526764 L86.810986,62.723822 L97.5944978,62.723822 L81.4192301,80.5166164 Z\"transform=\"translate(53.921275, 62.184646) rotate(-60.000000) translate(-53.921275, -62.184646) \"></path>\n    </g>\n</svg>"
        },
        "$:/plugins/tiddlywiki/markdown/new-markdown-button": {
            "title": "$:/plugins/tiddlywiki/markdown/new-markdown-button",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}} {{$:/language/Buttons/NewMarkdown/Caption}}",
            "description": "{{$:/language/Buttons/NewMarkdown/Hint}}",
            "list-after": "$:/core/ui/Buttons/new-tiddler",
            "text": "<$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=\"text/x-markdown\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewMarkdown/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/plugins/tiddlywiki/markdown/readme": {
            "title": "$:/plugins/tiddlywiki/markdown/readme",
            "text": "This is a TiddlyWiki plugin for parsing Markdown text, based on the [[markdown-js|https://github.com/evilstreak/markdown-js]] project from Dominic Baggott. \n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/markdown]]\n"
        },
        "$:/plugins/tiddlywiki/markdown/usage": {
            "title": "$:/plugins/tiddlywiki/markdown/usage",
            "text": "! Markdown Dialects\n\nBy default the markdown parser recognises the original dialect of Markdown [[as described by John Gruber|http://daringfireball.net/projects/markdown/]]. An extended dialect called \"Maruku\" is also included that provides table support and other advanced features. The syntax extensions are modelled on those of [[PHP Markdown Extra|https://michelf.ca/projects/php-markdown/extra/]].\n\nThe configuration tiddler [[$:/config/markdown/dialect]] determines which dialect is used:\n\n|!Dialect |!Description |\n|Gruber |Standard Markdown |\n|Maruku |Extended Maruku Markdown |\n\n\n! Creating ~WikiLinks\n\nCreate wiki links with the usual Markdown link syntax targeting `#` and the target tiddler title:\n\n```\n[link text](#TiddlerTitle)\n```\n\n! Images\n\nMarkdown image syntax can be used to reference images by tiddler title or an external URI. For example:\n\n```\n![alt text](/path/to/img.jpg \"Title\")\n\n![alt text](Motovun Jack.jpg \"Title\")\n```\n"
        },
        "$:/plugins/tiddlywiki/markdown/wrapper.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/markdown/wrapper.js\ntype: application/javascript\nmodule-type: parser\n\nWraps up the markdown-js parser for use in TiddlyWiki5\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar markdown = require(\"$:/plugins/tiddlywiki/markdown/markdown.js\");\n\nvar CONFIG_DIALECT_TIDDLER = \"$:/config/markdown/dialect\",\n\tDEFAULT_DIALECT = \"Gruber\";\n\nfunction transformNodes(nodes) {\n\tvar results = [];\n\tfor(var index=0; index<nodes.length; index++) {\n\t\tresults.push(transformNode(nodes[index]));\n\t}\n\treturn results;\n}\n\nfunction transformNode(node) {\n\tif($tw.utils.isArray(node)) {\n\t\tvar p = 0,\n\t\t\twidget = {type: \"element\", tag: node[p++]};\n\t\tif(!$tw.utils.isArray(node[p]) && typeof(node[p]) === \"object\") {\n\t\t\twidget.attributes = {};\n\t\t\t$tw.utils.each(node[p++],function(value,name) {\n\t\t\t\twidget.attributes[name] = {type: \"string\", value: value};\n\t\t\t});\n\t\t}\n\t\twidget.children = transformNodes(node.slice(p++));\n\t\t// Massage images into the image widget\n\t\tif(widget.tag === \"img\") {\n\t\t\twidget.type = \"image\";\n\t\t\tif(widget.attributes.alt) {\n\t\t\t\twidget.attributes.tooltip = widget.attributes.alt;\n\t\t\t\tdelete widget.attributes.alt;\n\t\t\t}\n\t\t\tif(widget.attributes.src) {\n\t\t\t\twidget.attributes.source = widget.attributes.src;\n\t\t\t\tdelete widget.attributes.src;\n\t\t\t}\n\t\t}\n\t\t// Convert internal links to proper wikilinks\n\t\tif (widget.tag === \"a\" && widget.attributes.href.value[0] === \"#\") {\n\t\t\twidget.type = \"link\";\n\t\t\twidget.attributes.to = widget.attributes.href;\n\t\t\tif (widget.attributes.to.type === \"string\") {\n\t\t\t\t//Remove '#' before conversion to wikilink\n\t\t\t\twidget.attributes.to.value = widget.attributes.to.value.substr(1);\n\t\t\t}\n\t\t\t//Children is fine\n\t\t\tdelete widget.tag;\n\t\t\tdelete widget.attributes.href;\n\t\t}\n\t\treturn widget;\n\t} else {\n\t\treturn {type: \"text\", text: node};\n\t}\n}\n\nvar MarkdownParser = function(type,text,options) {\n\tvar dialect = options.wiki.getTiddlerText(CONFIG_DIALECT_TIDDLER,DEFAULT_DIALECT),\n\t\tmarkdownTree = markdown.toHTMLTree(text,dialect),\n\t\tnode = $tw.utils.isArray(markdownTree[1]) ? markdownTree.slice(1) : markdownTree.slice(2);\n\tthis.tree = transformNodes(node);\n};\n\n/*\n\n[ 'html',\n  [ 'p', 'something' ],\n  [ 'h1',\n    'heading and ',\n    [ 'strong', 'other' ] ] ]\n\n*/\n\nexports[\"text/x-markdown\"] = MarkdownParser;\n\n})();\n\n",
            "title": "$:/plugins/tiddlywiki/markdown/wrapper.js",
            "type": "application/javascript",
            "module-type": "parser"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js": {
            "text": "(function(doc) {\n\nfunction _exposeIosHtml5DragDropShim(config) {\n  log = noop; // noOp, remove this line to enable debugging\n\n  var coordinateSystemForElementFromPoint;\n\n  var DRAG_OVER_EMIT_FREQ = 50;\n\n  function main() {\n    config = config || {};\n    if (!config.hasOwnProperty(\"simulateAnchorClick\")) config.simulateAnchorClick = true;\n\n    coordinateSystemForElementFromPoint = navigator.userAgent.match(/OS [1-4](?:_\\d+)+ like Mac/) ? \"page\" : \"client\";\n\n    var div = doc.createElement('div');\n    var dragDiv = 'draggable' in div;\n    var evts = 'ondragstart' in div && 'ondrop' in div;\n\n    var needsPatch = !(dragDiv || evts) || /iPad|iPhone|iPod|Android/.test(navigator.userAgent);\n    log((needsPatch ? \"\" : \"not \") + \"patching html5 drag drop\");\n\n    if(!needsPatch) {\n      return;\n    }\n\n    if(!config.enableEnterLeave) {\n      DragDrop.prototype.synthesizeEnterLeave = noop;\n    }\n\n    if(config.holdToDrag){\n      doc.addEventListener(\"touchstart\", touchstartDelay(config.holdToDrag), {passive:false});\n    }\n    else {\n      doc.addEventListener(\"touchstart\", touchstart, {passive:false});\n    }\n  }\n\n  function DragDrop(event, el) {\n\n    this.dragData = {};\n    this.dragDataTypes = [];\n    this.dragImage = null;\n    this.dragImageTransform = null;\n    this.dragImageWebKitTransform = null;\n    this.customDragImage = null;\n    this.customDragImageX = null;\n    this.customDragImageY = null;\n    this.el = el || event.target;\n    this.dragOverTimer = null;\n    this.lastMoveEvent = null;\n\n    log(\"dragstart\");\n\n    if (this.dispatchDragStart()) {\n      this.createDragImage();\n      this.listen();\n    }\n  }\n\n  DragDrop.prototype = {\n    listen: function() {\n      var move = onEvt(doc, \"touchmove\", this.move, this);\n      var end = onEvt(doc, \"touchend\", ontouchend, this);\n      var cancel = onEvt(doc, \"touchcancel\", cleanup, this);\n\n      function ontouchend(event) {\n        this.dragend(event, event.target);\n        cleanup.call(this);\n      }\n      function cleanup() {\n        log(\"cleanup\");\n        this.dragDataTypes = [];\n        if (this.dragImage !== null) {\n          this.dragImage.parentNode.removeChild(this.dragImage);\n          this.dragImage = null;\n          this.dragImageTransform = null;\n          this.dragImageWebKitTransform = null;\n        }\n        this.customDragImage = null;\n        this.customDragImageX = null;\n        this.customDragImageY = null;\n        this.el = this.dragData = null;\n        return [move, end, cancel].forEach(function(handler) {\n          return handler.off();\n        });\n      }\n    },\n    move: function(event) {\n      event.preventDefault();\n      var pageXs = [], pageYs = [];\n      [].forEach.call(event.changedTouches, function(touch) {\n        pageXs.push(touch.pageX);\n        pageYs.push(touch.pageY);\n      });\n\n      var x = average(pageXs) - (this.customDragImageX || parseInt(this.dragImage.offsetWidth, 10) / 2);\n      var y = average(pageYs) - (this.customDragImageY || parseInt(this.dragImage.offsetHeight, 10) / 2);\n      this.translateDragImage(x, y);\n\n      this.synthesizeEnterLeave(event);\n      this.synthesizeOver(event);\n    },\n    // We use translate instead of top/left because of sub-pixel rendering and for the hope of better performance\n    // http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/\n    translateDragImage: function(x, y) {\n      var translate = \"translate(\" + x + \"px,\" + y + \"px) \";\n\n      if (this.dragImageWebKitTransform !== null) {\n        this.dragImage.style[\"-webkit-transform\"] = translate + this.dragImageWebKitTransform;\n      }\n      if (this.dragImageTransform !== null) {\n        this.dragImage.style.transform = translate + this.dragImageTransform;\n      }\n    },\n    synthesizeEnterLeave: function(event) {\n      var target = elementFromTouchEvent(this.el,event)\n      if (target != this.lastEnter) {\n        if (this.lastEnter) {\n          this.dispatchLeave(event);\n        }\n        this.lastEnter = target;\n        if (this.lastEnter) {\n          this.dispatchEnter(event);\n        }\n      }\n    },\n    synthesizeOver: function(event) {\n      this.lastMoveEvent = event;\n      if(this.lastEnter && !this.dragOverTimer) {\n        this.dragOverTimer = setInterval(this.dispatchOver.bind(this), DRAG_OVER_EMIT_FREQ);\n      }\n    },\n    clearDragOverTimer: function() {\n      if(this.dragOverTimer) {\n        clearInterval(this.dragOverTimer);\n        this.dragOverTimer = null;\n      }\n    },\n    dragend: function(event) {\n\n      // we'll dispatch drop if there's a target, then dragEnd.\n      // drop comes first http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#drag-and-drop-processing-model\n      log(\"dragend\");\n\n      if (this.lastEnter) {\n        this.dispatchLeave(event);\n      }\n\n      var target = elementFromTouchEvent(this.el,event)\n      if (target) {\n        log(\"found drop target \" + target.tagName);\n        this.dispatchDrop(target, event);\n      } else {\n        log(\"no drop target\");\n      }\n\n      var dragendEvt = doc.createEvent(\"Event\");\n      dragendEvt.initEvent(\"dragend\", true, true);\n      this.el.dispatchEvent(dragendEvt);\n      this.clearDragOverTimer();\n    },\n    dispatchDrop: function(target, event) {\n      var dropEvt = doc.createEvent(\"Event\");\n      dropEvt.initEvent(\"drop\", true, true);\n\n      var touch = event.changedTouches[0];\n      var x = touch[coordinateSystemForElementFromPoint + 'X'];\n      var y = touch[coordinateSystemForElementFromPoint + 'Y'];\n\n      var targetOffset = getOffset(target);\n\n      dropEvt.offsetX = x - targetOffset.x;\n      dropEvt.offsetY = y - targetOffset.y;\n\n      dropEvt.dataTransfer = {\n        types: this.dragDataTypes,\n        getData: function(type) {\n          return this.dragData[type];\n        }.bind(this),\n        dropEffect: \"move\"\n      };\n      dropEvt.preventDefault = function() {\n        // https://www.w3.org/Bugs/Public/show_bug.cgi?id=14638 - if we don't cancel it, we'll snap back\n      }.bind(this);\n\n      once(doc, \"drop\", function() {\n        log(\"drop event not canceled\");\n      },this);\n\n      target.dispatchEvent(dropEvt);\n    },\n    dispatchEnter: function(event) {\n\n      var enterEvt = doc.createEvent(\"Event\");\n      enterEvt.initEvent(\"dragenter\", true, true);\n      enterEvt.dataTransfer = {\n        types: this.dragDataTypes,\n        getData: function(type) {\n          return this.dragData[type];\n        }.bind(this)\n      };\n\n      var touch = event.changedTouches[0];\n      enterEvt.pageX = touch.pageX;\n      enterEvt.pageY = touch.pageY;\n      enterEvt.clientX = touch.clientX;\n      enterEvt.clientY = touch.clientY;\n\n      this.lastEnter.dispatchEvent(enterEvt);\n    },\n    dispatchOver: function() {\n\n      var overEvt = doc.createEvent(\"Event\");\n      overEvt.initEvent(\"dragover\", true, true);\n      overEvt.dataTransfer = {\n        types: this.dragDataTypes,\n        getData: function(type) {\n          return this.dragData[type];\n        }.bind(this)\n      };\n\n      var touch = this.lastMoveEvent.changedTouches[0];\n      overEvt.pageX = touch.pageX;\n      overEvt.pageY = touch.pageY;\n      overEvt.clientX = touch.clientX;\n      overEvt.clientY = touch.clientY;\n\n      this.lastEnter.dispatchEvent(overEvt);\n    },\n    dispatchLeave: function(event) {\n\n      var leaveEvt = doc.createEvent(\"Event\");\n      leaveEvt.initEvent(\"dragleave\", true, true);\n      leaveEvt.dataTransfer = {\n        types: this.dragDataTypes,\n        getData: function(type) {\n          return this.dragData[type];\n        }.bind(this)\n      };\n\n      var touch = event.changedTouches[0];\n      leaveEvt.pageX = touch.pageX;\n      leaveEvt.pageY = touch.pageY;\n      leaveEvt.clientX = touch.clientX;\n      leaveEvt.clientY = touch.clientY;\n\n      this.lastEnter.dispatchEvent(leaveEvt);\n      this.lastEnter = null;\n      this.clearDragOverTimer();\n    },\n    dispatchDragStart: function() {\n      var evt = doc.createEvent(\"Event\");\n      evt.initEvent(\"dragstart\", true, true);\n      evt.dataTransfer = {\n        setData: function(type, val) {\n          this.dragData[type] = val;\n          if (this.dragDataTypes.indexOf(type) == -1) {\n            this.dragDataTypes[this.dragDataTypes.length] = type;\n          }\n          return val;\n        }.bind(this),\n        setDragImage: function(el, x, y){\n          this.customDragImage = el;\n          this.customDragImageX = x\n          this.customDragImageY = y\n        }.bind(this),\n        dropEffect: \"move\"\n      };\n      return this.el.dispatchEvent(evt);\n    },\n    createDragImage: function() {\n      if (this.customDragImage) {\n        this.dragImage = this.customDragImage.cloneNode(true);\n        duplicateStyle(this.customDragImage, this.dragImage);\n      } else {\n        this.dragImage = this.el.cloneNode(true);\n        duplicateStyle(this.el, this.dragImage);\n      }\n      this.dragImage.style.opacity = \"0.5\";\n      this.dragImage.style.position = \"absolute\";\n      this.dragImage.style.left = \"0px\";\n      this.dragImage.style.top = \"0px\";\n      this.dragImage.style.zIndex = \"999999\";\n\n      var transform = this.dragImage.style.transform;\n      if (typeof transform !== \"undefined\") {\n        this.dragImageTransform = \"\";\n        if (transform != \"none\") {\n          this.dragImageTransform = transform.replace(/translate\\(\\D*\\d+[^,]*,\\D*\\d+[^,]*\\)\\s*/g, '');\n        }\n      }\n\n      var webkitTransform = this.dragImage.style[\"-webkit-transform\"];\n      if (typeof webkitTransform !== \"undefined\") {\n        this.dragImageWebKitTransform = \"\";\n        if (webkitTransform != \"none\") {\n          this.dragImageWebKitTransform = webkitTransform.replace(/translate\\(\\D*\\d+[^,]*,\\D*\\d+[^,]*\\)\\s*/g, '');\n        }\n      }\n\n      this.translateDragImage(-9999, -9999);\n\n      doc.body.appendChild(this.dragImage);\n    }\n  };\n\n  // delayed touch start event\n  function touchstartDelay(delay) {\n    return function(evt){\n      var el = evt.target;\n\n      do {\n        if (elementIsDraggable(el)) {\n          var heldItem = function() {\n            end.off();\n            cancel.off();\n            scroll.off();\n            touchstart(evt);\n          };\n\n          var onReleasedItem = function() {\n            end.off();\n            cancel.off();\n            scroll.off();\n            clearTimeout(timer);\n          };\n\n          var timer = setTimeout(heldItem, delay);\n\n          var end = onEvt(el, 'touchend', onReleasedItem, this);\n          var cancel = onEvt(el, 'touchcancel', onReleasedItem, this);\n          var scroll = onEvt(window, 'scroll', onReleasedItem, this);\n          break;\n        }\n      } while ((el = el.parentNode) && el !== doc.body);\n    };\n  };\n\n  // event listeners\n  function touchstart(evt) {\n    var el = evt.target;\n    do {\n      if (elementIsDraggable(el)) {\n        handleTouchStartOnAnchor(evt, el);\n\n        evt.preventDefault();\n        new DragDrop(evt,el);\n        break;\n      }\n    } while((el = el.parentNode) && el !== doc.body);\n  }\n\n  function elementIsDraggable(el){\n    // if an element is not draggable either explicitly or implicitly we can exit immediately\n    if(!el.draggable) return false;\n\n    // if an element has been explicitly set to be draggable we're good to go\n    if(el.hasAttribute(\"draggable\")) return true;\n\n    // otherwise we investigate the implicit option\n    return (!config.requireExplicitDraggable);\n  }\n\n  function elementIsAnchor(el){\n    return el.tagName.toLowerCase() == \"a\";\n  }\n\n  function handleTouchStartOnAnchor(evt, el){\n    // If draggable isn't explicitly set for anchors, then simulate a click event.\n    // Otherwise plain old vanilla links will stop working.\n    // https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events#Handling_clicks\n    if (!el.hasAttribute(\"draggable\") && elementIsAnchor(el) && config.simulateAnchorClick) {\n      var clickEvt = document.createEvent(\"MouseEvents\");\n      clickEvt.initMouseEvent(\"click\", true, true, el.ownerDocument.defaultView, 1,\n        evt.screenX, evt.screenY, evt.clientX, evt.clientY,\n        evt.ctrlKey, evt.altKey, evt.shiftKey, evt.metaKey, 0, null);\n      el.dispatchEvent(clickEvt);\n      log(\"Simulating click to anchor\");\n    }\n  }\n\n  // DOM helpers\n  function elementFromTouchEvent(el,event) {\n    var touch = event.changedTouches[0];\n    var target = doc.elementFromPoint(\n      touch[coordinateSystemForElementFromPoint + \"X\"],\n      touch[coordinateSystemForElementFromPoint + \"Y\"]\n    );\n    return target;\n  }\n\n  //calculate the offset position of an element (relative to the window, not the document)\n  function getOffset(el) {\n    var rect = el.getBoundingClientRect();\n    return {\n      \"x\": rect.left,\n      \"y\": rect.top\n    };\n  }\n\n  function onEvt(el, event, handler, context) {\n    if(context) {\n      handler = handler.bind(context);\n    }\n    el.addEventListener(event, handler, {passive:false});\n    return {\n      off: function() {\n        return el.removeEventListener(event, handler, {passive:false});\n      }\n    };\n  }\n\n  function once(el, event, handler, context) {\n    if(context) {\n      handler = handler.bind(context);\n    }\n    function listener(evt) {\n      handler(evt);\n      return el.removeEventListener(event,listener);\n    }\n    return el.addEventListener(event,listener);\n  }\n\n  // duplicateStyle expects dstNode to be a clone of srcNode\n  function duplicateStyle(srcNode, dstNode) {\n    // Is this node an element?\n    if (srcNode.nodeType == 1) {\n      // Remove any potential conflict attributes\n      dstNode.removeAttribute(\"id\");\n      dstNode.removeAttribute(\"class\");\n      dstNode.removeAttribute(\"style\");\n      dstNode.removeAttribute(\"draggable\");\n\n      // Clone the style\n      var cs = window.getComputedStyle(srcNode);\n      for (var i = 0; i < cs.length; i++) {\n        var csName = cs[i];\n        dstNode.style.setProperty(csName, cs.getPropertyValue(csName), cs.getPropertyPriority(csName));\n      }\n\n      // Pointer events as none makes the drag image transparent to document.elementFromPoint()\n      dstNode.style.pointerEvents = \"none\";\n    }\n\n    // Do the same for the children\n    if (srcNode.hasChildNodes()) {\n      for (var j = 0; j < srcNode.childNodes.length; j++) {\n        duplicateStyle(srcNode.childNodes[j], dstNode.childNodes[j]);\n      }\n    }\n  }\n\n  // general helpers\n  function log(msg) {\n    console.log(msg);\n  }\n\n  function average(arr) {\n    if (arr.length === 0) return 0;\n    return arr.reduce((function(s, v) {\n      return v + s;\n    }), 0) / arr.length;\n  }\n\n  function noop() {}\n\n  main();\n\n};\n\nif (typeof module === 'object' && typeof module.exports === 'object') {\n  module.exports = _exposeIosHtml5DragDropShim;\n} else if (typeof window !== 'undefined') {\n  _exposeIosHtml5DragDropShim(window.iosDragDropShim);\n}\n})(document);",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js"
        },
        "$:/plugins/tiddlywiki/mobiledragdrop/license": {
            "text": "Copyright (c) 2013 Tim Ruffles\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
            "type": "text/plain",
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/license"
        },
        "$:/plugins/tiddlywiki/mobiledragdrop/rawmarkup": {
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/rawmarkup",
            "tags": "$:/tags/RawMarkupWikified",
            "text": "`<script>\nvar iosDragDropShim = { enableEnterLeave: true, holdToDrag: 300 };`\n{{$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js}}\n`</script>`\n"
        },
        "$:/plugins/tiddlywiki/mobiledragdrop/readme": {
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/readme",
            "text": "This plugin provides a \"shim\" that enables HTML 5 compatible drag and drop operations on mobile browsers, including iOS and Android. The shim was created by Tim Ruffles and is published at https://github.com/timruffles/ios-html5-drag-drop-shim.\n\nAfter installing the plugin it is necessary to save the HTML file a second time before it will be fully enabled.\n"
        },
        "$:/plugins/tiddlywiki/mobiledragdrop/startup.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/mobiledragdrop/startup.js\ntype: application/javascript\nmodule-type: startup\n\nStartup initialisation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"mobiledragdrop\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\twindow.addEventListener(\"touchmove\", function() {});\n};\n\n})();\n",
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/startup.js",
            "type": "application/javascript",
            "module-type": "startup"
        }
    }
}
{
    "tiddlers": {
        "$:/config/AnimationDuration": {
            "text": "600",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/config/AnimationDuration",
            "tags": "$:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modifier": "venomspinner",
            "modified": "20161031174446166",
            "creator": "venomspinner",
            "created": "20161028170329291",
            "bag": "default"
        },
        "$:/core/ui/PageTemplate/sidebar": {
            "text": "<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"no\" retain=\"yes\" animate=\"yes\">\n\n{{||$:/core/ui/PageTemplate/pagecontrols}}\n\n<$transclude tiddler=\"$:/core/ui/SideBarLists\" mode=\"inline\"/>\n\n</$reveal>\n\n</div>\n\n</$scrollable>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/core/ui/PageTemplate/sidebar",
            "tags": "$:/tags/PageTemplate $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modified": "20161031174446017",
            "created": "20161030145349771",
            "bag": "default"
        },
        "$:/core/ui/TopBar/menu": {
            "text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\" default=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"roundbtn\">\n<span>{{$:/core/images/right-arrow}}</span>\n{{$:/irreverent-mudblood/overlay-sidebar/backgroundstyle}}\n</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\" default=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"roundbtn\"><span>{{$:/core/images/left-arrow}}</span>\n{{$:/irreverent-mudblood/overlay-sidebar/backgroundstyle2}}\n</$button>\n</$reveal>\n",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/core/ui/TopBar/menu",
            "tags": "$:/tags/TopRightBar $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modifier": "Dr. Rizwan Ishak",
            "modified": "20161031174446206",
            "creator": "Dr. Rizwan Ishak",
            "created": "20161002082547234",
            "bag": "default"
        },
        "$:/DefaultTiddlers": {
            "text": "[!is[system]![TableOfContents]!sort[modified]limit[3]]\n",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/DefaultTiddlers",
            "modified": "20161111182143694",
            "created": "20131127215321439"
        },
        "$:/irreverent-mudblood/overlay-sidebar/backgroundstyle": {
            "created": "20161030153934135",
            "text": "<style>\n@media only screen and (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.tc-sidebar-scrollable { \nbackground-color: #FEFEFE; \nz-index: 1000 !important;\npadding: 42px 0 28px 42px;\nborder-left: 1px solid #e1e1e1;\n}\n}\n\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.tc-sidebar-scrollable { \nposition:fixed !important;\nbackground-color:#FEFEFE; \npadding: 42px 0 28px 42px;\nz-index: 1000 !important; \nwidth:100% !important ; \nborder-left: 1px solid #e1e1e1;\nleft:0% !important;\ntop: 0px !important;\nbottom: 0 !important;\nright: 0 !important;\nmargin: 0 0 0 -20px !important;\n}\n}\n</style>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/irreverent-mudblood/overlay-sidebar/backgroundstyle",
            "tags": "$:/OverlaySidebar $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modified": "20161109105829329",
            "bag": "default"
        },
        "$:/irreverent-mudblood/overlay-sidebar/backgroundstyle2": {
            "text": "<style>.tc-sidebar-scrollable { background-color: rgba(0,0,0,0.0); z-index: -1; }</style>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/irreverent-mudblood/overlay-sidebar/backgroundstyle2",
            "tags": "$:/OverlaySidebar $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modifier": "Dr. Rizwan Ishak",
            "modified": "20161031174446321",
            "creator": "Dr. Rizwan Ishak",
            "created": "20160829073842702",
            "bag": "default"
        },
        "$:/irreverent-mudblood/overlay-sidebar/stylesheet": {
            "created": "20161030153009897",
            "text": ".roundbtn {\nbackground-color:{{!!roundbtnbg}};\nfont-size: 25px; \nposition: relative;\ndisplay: inline-block;\nwidth: 35px;\nheight: 35px;\ncursor: pointer; \nborder: none; \nborder-radius:100px; \nbox-shadow: 0 2px 5px 0 rgba(0, 0, 0, .26);\n\n}\n\n.roundbtn span svg{\nfont-size:15px;  \nposition: absolute;  \ntop: 0;  right: 0;    \nbottom: 0;    \nleft: 0;    \noverflow: auto;    \nwidth: 50%;    \nheight: 50%;    \nmargin: auto; \nopacity: 0.8;\nfill: {{!!roundbtnspan}};\n\n}\n.roundbtn:hover span svg{\nfont-size:15px;  \nposition: absolute;  \ntop: 0;  right: 0;    \nbottom: 0;    \nleft: 0;    \noverflow: auto;    \nmargin: auto; \nopacity:1;\nfill: {{!!roundbtnspan}} !important;\n}",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/irreverent-mudblood/overlay-sidebar/stylesheet",
            "tags": "$:/tags/Stylesheet $:/OverlaySidebar $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modified": "20161111175422374",
            "bag": "default",
            "roundbtnbg": "#ee4056",
            "roundbtnspan": "#fff"
        },
        "$:/themes/ghostwriter/stylesheet/main": {
            "text": " \n---\n/* System */\n\n .tc-control-panel table .autowidthinput input {width:auto;}\n\n.tc-sidebar-lists .tc-tab-set > .tc-tab-content .tc-image-button img { margin: 0 !important; display:inline-block } \n\n---\n/*Base*/\n\n---\n\nhtml, body {\n  height: 100%;\n }\n\nbody {\n  background: #fefefe;\n  color: #424242;\n  font-family: \"Open Sans\", arial, sans-serif  !important;\n  font-size: 15px;\n }\n\n\n\nh1, h2, h3, h4, h5, h6 {\n  margin-bottom: 33px;\n  text-transform: none; \n}\n\nh1 {\n  font-size: 26px; }\n\nh2 {\n  font-size: 24px; }\n\nh3 {\n  font-size: 20px;\n  margin-bottom: 20px; }\n\nh4 {\n  font-size: 18px;\n  margin-bottom: 18px; }\n\nh5 {\n  font-size: 16px;\n  margin-bottom: 15px; }\n\nh6 {\n  font-size: 14px;\n  margin-bottom: 12px; }\n\np {\n  line-height: 1.8;\n  margin: 0 0 30px; }\n\na {\n  text-decoration: none; !important}\n\nul, ol {\n  list-style-position: inside ;\n  line-height: 1.8 ;\n  margin: 0 0 40px;\n  padding: 0 }\n  ul ul, ul ol, ol ul, ol ol {\n    margin: 10px 0 0 20px  }\n  ul li, ol li {\n    margin: 0 0 10px }\n    ul li:last-of-type, ol li:last-of-type {\n      margin-bottom: 0 }\n\nblockquote {\n  border-left: 1px dotted #303030;\n  margin: 40px 0;\n  padding: 5px 30px; }\n  blockquote p {\n    color: #AEADAD;\n    display: block;\n    font-style: italic;\n    margin: 0;\n    width: 100%; }\n\nimg {\n  display: block;\n  margin: 40px 0;\n  width: auto ;\n  max-width: 100%}\n\npre {\n  background: #F1F0EA !important;\n  border: 1px solid #DDDBCC !important;\n  border-radius: 3px !important;\n  margin: 0 0 40px !important;\n  padding: 15px 20px !important; }\n\nhr {\n  border: none !important;\n  border-bottom: 1px dotted #303030 !important;\n  margin: 45px 0 !important; }\n\ntable {\n    margin-bottom: 40px !important;\n    width: 100% !important;\n}\ntable tbody > tr:nth-child(odd) > td,\ntable tbody > tr:nth-child(odd) > th {\n    background-color: #f7f7f3 !important;\n}\ntable th {\n    padding: 0 10px 10px !important;\n    text-align: left !important;\n}\ntable td {\n    padding: 10px !important;\n}\ntable tr {\n    border-bottom: 1px dotted #AEADAD !important;\n}\n\n::selection {\n  background: #FFF5B8 !important;\n  color: #000 !important;\n  display: block !important; }\n\n::-moz-selection {\n  background: #FFF5B8 !important;\n  color: #000 !important;\n  display: block !important; }\n\n\n.hidden {\n  text-indent: -9999px !important;\n  visibility: hidden !important;\n  display: none !important; }\n\n.clearfix:after {\n  content: \"\" !important;\n  display: table !important;\n  clear: both !important; }\n\ncode {\nbackground:transparent !important;\nborder:none !important;\n}\n\n\n\n\n---\n/*Title*/\n\n---\n.tc-titlebar h2.tc-title {\n\tfont-size: 52px;\n\tdisplay: block;\n\tfont-weight: 700;\n\tmargin: 15px 0;\n\ttext-align: center;\n\ttext-transform: uppercase;\n\tcolor: #424242;\n\tfill: #424242 !important;\n\tword-wrap: break-word;\n\tfont-family: \"Open Sans\", arial, sans-serif;\n\tmargin-block-start: 1em;\n\tmargin-block-end: 1em;\n\tline-height: 1.2;\n\tmargin-bottom: 10px;\n}\n.titleclass {\n\tfont-size: 52px;\n\tdisplay: block;\n\tfont-weight: 700;\n\tmargin: 15px 0;\n\ttext-align: center;\n\ttext-transform: uppercase;\n\tcolor: #424242;\n\tfill: #424242 !important;\n\tword-wrap: break-word;\n\tfont-family: \"Open Sans\", arial, sans-serif;\n\tmargin-block-start: 1em;\n\tmargin-block-end: 1em;\n\tline-height: 1.2;\n\tmargin-bottom: 10px;\n}\n\n.tc-tiddler-title::after {\n\tborder-bottom: 1px dotted #303030;\n\tcontent: \"\";\n\tdisplay: block;\n\tmargin: 30px auto 0;\n\twidth: 100px;\n}\n\ndiv.tc-tagged-interface h2.tc-title, div.tc-tagged-interface div.tc-subtitle, div.tc-tagged-interface div.tc-tags-wrapper {display:none;}\n\n@media only screen and (max-width: 768px) {\n.tc-titlebar h2.tc-title {font-size: 28px;font-size:{{$:/themes/ghostwriter/user/mobile!!titlesize}}; margin-top: 40px !important;}\n.tc-site-title, .tc-titlebar{font-size:2em !important;}\n.titleclass {font-size: 28px !important; margin-top: 40px !important;}\n}\n\ntc-tagged-Interface .tc-title {display:none;}\n\n\n/* Subtitle */\n\ndiv.tc-tiddler-frame .tc-subtitle {\n\tcolor: #AEADAD;\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tline-height: 1;\n\tmargin: 25px auto 0;\n\ttext-align: center;\n\ttext-transform: uppercase;\n\tdisplay: block;\n\tmargin-block-start: 1em;\n\tmargin-block-end: 1em;\n\tpadding-bottom: 25px;\n}\n.tc-subtitle>a{\ndisplay:none !important;\n}\n\n<$reveal type=nomatch state=\"$:/status/UserName\" text=\"\">\n.tc-subtitle:after{\ncontent: \"BY: {{$:/status/UserName}}\";\nfont-weight:700;\n}\n</$reveal>\n\n\n/* Body */\n\ndiv.tc-tiddler-frame > .tc-tiddler-body {\n\tmargin: 0 auto;\n\tposition: relative;\n\twidth: 100%;\n\tmax-width: 810px;\n\tborder-top: 6px solid #303030;\n\tpadding-top: 50px;\n}\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\ndiv.tc-tiddler-frame > .tc-tiddler-body {\n  font-size: {{$:/themes/ghostwriter/user/mobile!!fontsize}};\n }\n}\n\n/* Tags */\n\nbutton.tc-tag-label, span.tc-tag-label {\nfont-size:14px !important;\nline-height: normal !important;\nbackground: transparent !important;\ntext-decoration: none !important;\ncolor:#666 !important;\n}\n\n/* The tags in the viewTemplate has inbuilt style. Hence the use to 'important' to overcome that*/\ndiv.tc-tiddler-frame > div.tc-reveal >div.tc-tags-wrapper >span.tc-tag-list-item> button  {\ncolor: {{!!theme_color}} !important;\n}\n\n\n.tc-edit-tags .tc-tiddlylink.tc-tiddlylink-missing:hover, .tc-edit-tags .tc-tiddlylink.tc-tiddlylink-resolves:hover, .tc-edit-tags .tc-tiddlylink.tc-tiddlylink-shadow:hover  {\n    border-bottom: none !important;\npadding: 4px 14px 4px 14px !important;\n}\n\n/* Links */\n\n.tc-body a:hover {\n  border-bottom: 1px dotted {{!!theme_color}};\n  }\n\n.tc-body a.tc-tiddlylink-missing {\n\tfont-style: normal !important;\n\tcolor: #237095 !important;\n}\na.tc-tiddlylink-missing:hover, button.tc-tiddlylink:hover, a.tc-tiddlylink:hover {\n text-decoration: none !important;\n  border-bottom: 1px dotted {{!!theme_color}} !important;\n}\na.tc-tiddlylink-external {\n\ttext-decoration: none !important;\n\tcolor: #3C2BB1 !important;\n\tbackground-color: inherit !important;\n}\na.tc-tiddlylink-external:hover {\n  border-bottom: 1px dotted {{!!theme_color}} !important;\n}\n\n.tc-tag-list-item > span > div.tc-menu-list-item > a:hover {\nborder-bottom: none !important;\npadding: 0 14px 0 14px !important;\n}\n\ntc-block-dropdown tc-search-drop-down tc-popup-handle {\nborder-bottom: none !important;\npadding:initial !important;\n}\n\ndiv.tc-menu-list-item > a:hover {\nborder-bottom:none !important;\n}\n\n\n/* Tag Drop Down */\n\n.tc-edit-tags .tc-block-dropdown{\n    position: absolute !important;\n    min-width: 220px !important;\n    background-color: #FEFEFE !important;\n    white-space: nowrap !important;\n    z-index: 1000 !important;\n    text-shadow: none !important;\n    color: #606060 !important;\n    font-family: gotham, helvetica, arial, sans-serif !important;\n    font-size: 13px ;\n    font-weight: 500 !important;\n    right: 70% !important;\n    padding: 15px 7px !important;\n    border: 3px solid rgba(217, 217, 217, .4) !important;\n    border-top: 1px solid rgba(217, 217, 217, .4) !important;\n    border-left: 1px solid rgba(217, 217, 217, .4) !important;\n    margin: 1rem !important;\n    margin-top: 4px !important;\n    text-overflow: ellipsis !important;\n    box-shadow: 0 6px 20px rgba(0, 0, 0, .04), -6px 8px 15px rgba(0, 0, 0, .04), 6px 8px 15px rgba(0, 0, 0, .04) !important;\n}\n\n---\n/* Site Header */\n\n---\n\n.site-header {\n    padding: 60px 0 0 !important;\n    overflow: auto !important;\n    text-align: center !important;\n    text-transform: uppercase !important;\n}\n.site-title-wrapper {\n    display: table !important;\n    margin: 0 auto !important;\n}\n.site-title {\n    float: left !important;\n    font-size: 14px !important;\n    font-weight: 600 !important;\n    margin: 0 !important;\n    text-transform: uppercase !important;\n}\n.site-title a {\n\tfloat: left !important;\n\tbackground: #f03838 !important;\n\tcolor: #FEFEFE !important;\n\tpadding: 8px 10px 8px !important;\n\tfont-weight: normal;\n\t-webkit-user-select: inherit;\n}\n.site-title a:hover {\n    background: #303030 !important;\n    border-bottom: none !important;\n}\n.site-logo {\n    display: block !important;\n}\n.site-logo img {\n    margin: 0 !important;\n}\n.site-nav {\n    list-style: none !important;\n    margin: 28px 0 10px !important;\n}\n\n.site-nav-item {\n    display: inline-block !important;\n    font-size: 14px !important;\n    font-weight: 700 !important;\n    margin: 0 10px !important;\n    text-transform: uppercase !important;\n    color: {{!!theme_color}} !important;\n    text-decoration: none !important;\n    padding-right: 15px !important;\n    font-family: \"Open Sans\", arial, sans-serif !important;\n    line-height: 1.8 !important;\n    text-align: center !important;\n}\n.site-nav-item:hover {\n    color: #424242 !important;\n}\n\n---\n/* Site Subtitle */\n\n---\n\n.subtitleclass {\nfont-family:{{!!sitesubtitlefont}};\ncolor:#f03838;\ntext-transform: none;\nfont-size:{{!!sitesubtitlefontsize}};\n}\n\n\n\n---\n/* Table of Contents */\n\n---\n\n\n.post-stub-title {\ndisplay: inline-block;\nmargin: 0 !important;\ntext-transform: none !important;\nfont-size: 16px !important;\n}\n\n.post-index{\nmargin: 0 auto !important;\nposition: relative !important;\nwidth: 100% !important;\nmax-width: 889px !important;\n}\n\n.post-index ol {\nlist-style: none !important;\ndisplay: block !important;\nmargin-block-start: 1em !important;\nmargin-block-end: 1em !important;\n\n}\n.post-index li li a {\nfont-weight: 900 !important;\npadding-inline-start: 5px !important;\nmargin: 0 0 0 !important;\npadding: 0 0 0 25px !important;\ntransition: all 0.2s ease-in-out !important;\n}\n\n.post-index li li a:hover{\npadding: 20px 12px !important;\n}\n\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.post-index li li a {padding: 0 !important;}\n.post-index li li a:hover {padding: 0 !important;}\n}\n.post-stub {\ncolor: #424242 !important;\nfont-family: \"Open Sans\", arial, sans-serif !important;\nfont-size: 18px !important;\nline-height: 1.8 !important;\ndisplay: list-item !important;\ntext-align: match-parent !important;\nborder-bottom: 1px dotted #303030 !important;\nmargin: 0 !important;\nposition: relative !important;\npadding: 20px 5px !important;\n}\n\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.post-stub {font-size: 15px !important;line-height: 1.5 !important;}\n.post-stub .tc-btn-invisible {padding: 0 25px 0 0;}\n.post-stub-date {display:none;}\n.post-stub-title {display: inline;}\n.post-stub button svg.tc-image-right-arrow {\n\theight: 1.5em;\n\twidth: 1.5em;\n\tbackground: #fea;\n\tborder-radius: 50%;\n\tpadding: 3px;}\n}\n\n.post-stub a {\n color: #424242 !important;\npadding-inline-start: 10px !important;\nmargin: 80px 40px 0 !important;\npadding: 35px 0 0 !important;\n}\n\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.post-stub a {margin: 0 !important;}\n}\n.post-stub a:hover{\ncolor:{{!!theme_color}} !important;\noutline: 0 !important;\nborder-bottom:none !important;\n}\n\n\n---\n/*Theme Sake */\n\n---\n\n.tc-tiddler-frame {\n    padding: 0 42px 42px 42px !important;\n}\n\n@media only screen and (max-width: 768px) {\n.tc-tiddler-frame {\n padding: 0 10px 10px 10px !important;\n}\n.tc-story-river {\npadding: 20px !important;\nwidth: 100% !important;\n}\n}\n\n@media (max-width: 960px) {\n.tc-story-river {position:fixed}\n}\n\n---\n/*GENERIC*/\n\n---\n\n.tc-control-panel textarea,\n .tc-control-panel input[type=\"text\"],\n .tc-control-panel input[type=\"search\"],\n .tc-control-panel input[type=\"\"],\n .tc-control-panel input:not([type]),\n .tc-edit-field-value input[type=\"text\"],\n .tc-type-selector input[type=\"text\"] {\n     border: 1px solid #c4c4c4 !important;\n }\n\n\n .tc-block-dropdown {\n     border-radius: 4px !important;\n }\n\n\n .tc-block-dropdown a:hover {\n     background-color: #f0e68c !important;\n }\n\n\n .tc-drop-down {\n     color: #606060 !important;\n     font-family: gotham, helvetica, arial, sans-serif !important;\n     font-size: 13px;\n     font-weight: 500 !important;\n     position: relative;\n     right: 70% !important;\n     padding: 15px 7px !important;\n     border-radius: 2px !important;\n     border: 3px solid rgba(217, 217, 217, .4) !important;\n     border-top: 1px solid rgba(217, 217, 217, .4) !important;\n     border-left: 1px solid rgba(217, 217, 217, .4) !important;\n     margin: 1rem !important;\n     margin-top: 4px !important;\n     min-width: calc(100% + 100px) !important;\n     width: -moz-fit-content !important;\n     overflow: visible !important;\n     text-overflow: ellipsis !important;\n     box-shadow: 0 6px 20px rgba(0, 0, 0, .04), -6px 8px 15px rgba(0, 0, 0, .04), 6px 8px 15px rgba(0, 0, 0, .04) !important;\n }\n\n\n .tc-drop-down a:hover,\n .tc-drop-down button:hover,\n .tc-drop-down .tc-file-input-wrapper:hover button {\n     color: #444 !important;\n     background-color: #f0e68c !important;\n     text-decoration: none !important;\n }\n\n\n .tc-titlebar .tc-drop-down {\n     min-width: calc(100% + 30px) !important;\n }\n\n\n .tc-password-wrapper {\n     text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) !important;\n     background-color: #fbfcFe !important;\n     border: 1px solid rgb(225, 225, 225) !important;\n     box-shadow: 0 6px 20px rgba(0, 0, 0, .04), -6px 8px 15px rgba(0, 0, 0, .04), 6px 8px 15px rgba(0, 0, 0, .04) !important;\n     height: 300px !important;\n     width: 300px !important;\n }\n\n\n .tc-password-wrapper input {\n     width: 100% !important;\n     color: #000 !important;\n     border: 1px solid rgb(225, 225, 225) !important;\n     padding: 5px !important;\n     margin-bottom: 5px !important;\n }\n\n .tc-password-wrapper button {\n     width: 100% !important;\n     border-radius: 5px !important;\n     text-decoration: none !important;\n     color: #fff !important;\n     background-color: #26a69a !important;\n     text-align: center !important;\n     letter-spacing: .5px !important;\n     transition: .2s ease-out !important;\n     cursor: pointer !important;\n     border: none !important;\n     padding: 5px !important;\n     margin-bottom: 5px !important;\n }\n\n .tc-password-wrapper h1 {\n     color: #666 !important;\n     font-size: 13px;\n     text-transform: uppercase !important;\n     text-align: center !important;\n }\n\n hr {\n     color: #ececec;\n }\n\n .tg td {\n     font-size: 13.5px !important;\n     overflow: hidden !important;\n     padding: .3em !important;\n     word-break: normal !important;\n     border-width: 0 !important;\n }\n\n tr:nth-child(even) {\n     width: 100% !important;\n     background-color: #f6f3f6 !important;\n }\n\n\n---\n /* TIDDLER TOOLBAR */\n\n---\n<$reveal type=\"nomatch\" state=\"$:/themes/ghostwriter/transparencystate\" text=\"none\">\n\n @media only screen and (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .tc-tiddler-view-frame .tc-tiddler-controls svg {\n     fill: transparent;\n }\n</$reveal>\n<$reveal type=\"match\" state=\"$:/themes/ghostwriter/transparencystate\" text=\"close\">\n .tc-tiddler-view-frame .tc-tiddler-controls svg.tc-image-close-button {fill: #cccccc;}\n</$reveal>\n .tc-tiddler-view-frame .tc-tiddler-controls:hover svg,\n .tc-tiddler-view-frame .tc-tiddler-controls .tc-popup svg {\n     fill: #cccccc;\n }\n}\n\n---\n /* BUTTON ANIMATION */\n\n---\n \n .tc-page-controls svg,\n .tc-tiddler-controls svg,\n .tc-topbar button svg,\n .tc-sidebar-scrollable {\n     -webkit-transition: fill 200ms ease-in-out;\n     -moz-transition: fill 200ms ease-in-out;\n     transition: fill 200ms ease-in-out;\n }\n\n---\n /** * Notification */\n\n---\n \n .tc-notification {\n     position: fixed !important;\n     top: 35px !important;\n     right: 50px !important;\n     z-index: 1300 !important;\n     width: 300px !important;\n     height: 50px !important;\n     background-color: #FABF67 !important;\n     border: none !important;\n     color: black !important;\n     text-align: center !important;\n     line-height: normal !important;\n     padding-top: 10px !important;\n }\n\n---\n /** Search **/\n\n---\n \n input[type='search'] {\n     -webkit-transition: border .1s;\n     transition: border .1s;\n     position: relative;\n     background-color: transparent;\n     border: 1px solid;\n     border-radius: 2px;\n     border-color: #e1e1e1;\n     padding: 10px 40px 9px 8px;\n     margin: 0;\n     outline: none;\n     box-sizing: border-box;\n     width: 100%;\n }\n\n input[type='search']:focus,\n input[type='search'].focus {\n     border-color: #c1c1c1;\n }\n\n\n---\n/*Sidebar*/\n\n--- \n\n.tc-sidebar-lists button {\n    color: {{!!theme_color}};\n    fill: {{!!theme_color}};\n}\n.tc-sidebar-lists .tc-tab-buttons button {\n    display: inline-block !important;\n    font-size: 14px !important;\n    font-weight: 700 !important;\n    margin: 0 10px !important;\n    text-transform: uppercase;\n    color: {{!!theme_color}} !important ;\n    text-decoration: none !important;\n    padding-right: 15px !important;\n    font-family: \"Open Sans\", arial, sans-serif !important;\n    line-height: 1.8 !important;\n    text-align: center !important;\n    padding: 0 !important;\n    background: none !important;\n    border: none !important;\n}\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n    background-color: transparent !important;\n    border-left: none !important;\n    border-top: none !important;\n    border-right: none !important;\n    color: #666 !important;\n}\n\n.tc-sidebar-lists .tc-search .tc-popup-handle {\n    width: 60%;\n}\n.tc-sidebar-lists .tc-tab-set .tc-tab-content .tc-reveal button {\n    border: none;\n    outline: none;\n    background: transparent;\n    color: #666;\n    fill: #666;\n}\n.tc-sidebar-lists .tc-tab-set .tc-tab-content .tc-reveal .tc-more-sidebar .tc-tab-set .tc-tab-buttons button.tc-tab-selected {\n    color: blue;\n    fill: blue;\n}\n.tc-sidebar-lists .tc-tab-content i.tc-muted {\n    display: none;\n}\n\n/* Search drop down of Sidebar */\n\n.tc-sidebar-lists .tc-search-drop-down a.tc-tiddlylink:hover{\npadding: 0px 10px 0px 10px;\n}\n\n\n---\n/* Media Queries */\n\n---\n\n\n\n@media only screen and (max-width: 600px) {\n  h1, h2 {\n    margin-bottom: 20px; }\n\n  p {\n    margin-bottom: 20px; }\n\n  ul, ol {\n    margin-bottom: 20px; }\n\n  img {\n    margin: 30px 0; }\n\n  blockquote {\n    margin: 30px 0; }\n\n  pre {\n    margin: 30px 0; }\n\n  hr {\n    margin: 35px 0; }\n\n  .site-header {\n    padding-top: 60px; }\n\n  .site-nav-item {\n    display: block;\n    margin: 15px 0; }\n\n}\n",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/themes/ghostwriter/stylesheet/main",
            "theme_color": "#f03838",
            "tags": "$:/tags/Stylesheet $:/irreverent-mudblood/ghostwriter",
            "sitesubtitlefontsize": "16px",
            "sitesubtitlefont": "Parisienne, monospace",
            "revision": "0",
            "modifier": "Riz",
            "modified": "20161202041846264",
            "creator": "venomspinner",
            "created": "20161028105046905",
            "bag": "default"
        },
        "$:/themes/ghostwriter/Topbar": {
            "text": "<$reveal state=\"$:/themes/ghostwriter/user/topbarhide\" type=\"nomatch\" text=\"hide\">\n <header class=\"site-header\" style=\"text-align:center;\">\n            <div class=\"container\">\n                <div class=\"site-title-wrapper\">\n                        <h1 class=\"site-title\"><a href=\"#\">{{$:/SiteTitle}}</a></h1>\n                </div>\n\n                <div class=\"site-nav\">\n<$reveal state=\"$:/themes/ghostwriter/user/homehide\" type=\"nomatch\" text=\"hide\"><$button class=\"site-nav-item tc-btn-invisible\" message=\"tm-home\">HOME</$button></$reveal>\n<$reveal state=\"$:/themes/ghostwriter/user/contenthide\" type=\"nomatch\" text=\"hide\"><$button to=\"$:/TableOfContents\" class=\"site-nav-item tc-btn-invisible\">Contents</$button></$reveal>\n<$reveal state=\"$:/themes/ghostwriter/user/abouthide\" type=\"nomatch\" text=\"hide\"><$button to=\"$:/About\" class=\"site-nav-item tc-btn-invisible\">About</$button></$reveal>\n<$list filter=\"[![$:/themes/ghostwriter/topbarbtntemplate]tag[$:/themes/ghostwriter/user/topbarbutton]]\"><$transclude/></$list>\n                </div>\n            </div>\n        </header></$reveal>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/themes/ghostwriter/Topbar",
            "tags": "$:/tags/AboveStory $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modifier": "venomspinner",
            "modified": "20161110053524450",
            "creator": "venomspinner",
            "created": "20161028092007386",
            "bag": "default"
        },
        "$:/TableOfContents": {
            "text": "<div class=\"titleclass\"> Table of Contents </div>\n\n<div class=\"post-index\">\n<<tocghost-selective-expandable \"TableOfContents\"\"!sort[modified]\">>\n</div>",
            "title": "$:/TableOfContents",
            "tags": "$:/irreverent-mudblood/ghostwriter interface",
            "modified": "20161110070238232",
            "list": "",
            "created": "20161109082528301"
        },
        "$:/themes/ghostwriter/options": {
            "created": "20161101103541902",
            "creator": "Riz",
            "text": "!!Palette\n|Color theme|<$edit-text tiddler=\"$:/themes/ghostwriter/stylesheet/main\"  type=\"color\" tag=\"input\"  field=\"theme_color\"/><br><$edit-text tiddler=\"$:/themes/ghostwriter/stylesheet/main\"  field=\"theme_color\"/>|\n|Color of the Sidebar Show/Hide Button|<$edit-text tiddler=\"$:/irreverent-mudblood/overlay-sidebar/stylesheet\"  field=\"roundbtnbg\"  type=\"color\" tag=\"input\"/><br><$edit-text tiddler=\"$:/irreverent-mudblood/overlay-sidebar/stylesheet\"  field=\"roundbtnbg\"/>|\n\n!!Edit Toolbar\n|Transparency of Edit Toolbar Buttons |<$select tiddler='$:/themes/ghostwriter/transparencystate'><option value='all'>''All'' </option><option value='close'>All ''except close button''</option><option value='none'>None</option></$select>|\n\n!!Topbar and Pagination\n|Show/Hide Topbar | <span style=\"float:left;\"> <$reveal state=\"$:/themes/ghostwriter/user/topbarhide\" type=\"nomatch\" text=\"hide\"><$button>Hide Topbar<$action-setfield $tiddler=\"$:/themes/ghostwriter/user/topbarhide\" text=\"hide\"/></$button></$reveal><$reveal state=\"$:/themes/ghostwriter/user/topbarhide\" type=\"match\" text=\"hide\"><$button>Show Topbar<$action-setfield $tiddler=\"$:/themes/ghostwriter/user/topbarhide\" text=\"show\"/></$button></$reveal></span>|\n|Add a Top-bar Button|<$button><$action-sendmessage $message=\"tm-new-tiddler\" title=\"New Site Nav Item\" tags=\"$:/themes/ghostwriter/user/topbarbutton\" text={{$:/themes/ghostwriter/topbarbtntemplate}}/>New Top Bar Button</$button>|\n|Show / Hide Default Top-bar Button |<span style=\"float:left;\"> <$checkbox class=\"autowidthinput\" tiddler=\"$:/themes/ghostwriter/user/homehide\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"> Home</$checkbox>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<$checkbox class=\"autowidthinput\" tiddler=\"$:/themes/ghostwriter/user/contenthide\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"> Content</$checkbox>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<$checkbox class=\"autowidthinput\" tiddler=\"$:/themes/ghostwriter/user/abouthide\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\">&nbsp;About</$checkbox></span>|\n|Pagination|<$checkbox class=\"autowidthinput\" tiddler=\"$:/themes/ghostwriter/pagination\" tag=\"$:/tags/BelowStory\">  Display</$checkbox>|\n\n!!Mobile\n|Font Size|^<$edit-text tiddler=\"$:/themes/ghostwriter/user/mobile\" field=\"fontsize\" default=\"\" tag=\"input\"/> |\n|Title Size|^<$edit-text tiddler=\"$:/themes/ghostwriter/user/mobile\" field=\"titlesize\" default=\"28px\" tag=\"input\"/> |\n\n<$button class=\"tc-btn-big-green\" style=\"background-color:#e52d27;width:100%;font-size:14px;\">Remove Ghostwriter\n<$action-deletetiddler $filter=\"[prefix[$:/themes/ghostwriter/user/]]\"/>\n<$action-sendmessage $message=\"tm-delete-tiddler\" $param=\"$:/plugins/venomspinner/ghostwriter\"/>\n</$button>",
            "title": "$:/themes/ghostwriter/options",
            "tags": "$:/tags/ControlPanel/Appearance $:/irreverent-mudblood/ghostwriter",
            "modified": "20161202053044155",
            "caption": "Ghostwriter",
            "modifier": "Riz"
        },
        "$:/themes/ghostwriter/transparencystate": {
            "text": "close",
            "title": "$:/themes/ghostwriter/transparencystate",
            "tags": "$:/irreverent-mudblood/ghostwriter",
            "modified": "20161110021504405",
            "created": "20161109115418648"
        },
        "$:/palettes/Vanilla": {
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #FEFEFE\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #fefefe\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: \ntag-foreground: #f03838\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888",
            "type": "application/x-tiddler-dictionary",
            "title": "$:/palettes/Vanilla",
            "tags": "$:/tags/Palette $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "name": "Vanilla",
            "modifier": "venomspinner",
            "modified": "20161031174446260",
            "description": "Pale and unobtrusive",
            "creator": "venomspinner",
            "created": "20161028065018599",
            "bag": "default"
        },
        "$:/themes/ghostwriter/tocghostMacro": {
            "text": "\\define tocghost-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\">\n<span class=\"post-stub-title\"><$view field=\"title\"/></span>\n</$transclude>\n<$transclude field=\"caption\">\n <span class=\"post-stub-date\">/ Published <$view field=\"created\" format=\"date\" template=\"DDth MMM YYYY\"/></span>\n</$transclude>\n</$set>\n\\end\n\n\\define tocghost-body(rootTag,tag,sort:\"\")\n<ol class=\"post-list\">\n<$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\"\"\">\n<li class=\"post-stub\">\n<$list filter=\"[all[current]tocghost-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n<<tocghost-caption>>\n</$list>\n<$list filter=\"\"\"[all[current]] -[[$rootTag$]]\"\"\">\n<$macrocall $name=\"tocghost-body\" rootTag=\"\"\"$rootTag$\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$list>\n</li>\n</$set>\n</$list>\n</ol>\n\\end\n\n\n\\define tocghost-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"tocghost-state\" value=<<qualify \"\"\"$:/state/tocghost/$tag$-$(currentTiddler)$\"\"\">>>\n<$set name=\"tocghost-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"tocghost-item-selected\" emptyValue=\"tocghost-item\">\n<li class=\"post-stub\">\n<$link>\n<$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n<$reveal type=\"nomatch\" state=<<tocghost-state>> text=\"open\">\n<$button set=<<tocghost-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<tocghost-state>> text=\"open\">\n<$button set=<<tocghost-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</$list>\n<<tocghost-caption>>\n</$link>\n<$reveal type=\"match\" state=<<tocghost-state>> text=\"open\">\n<$macrocall $name=\"tocghost-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define tocghost-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"tocghost-state\" value=<<qualify \"\"\"$:/state/tocghost/$tag$-$(currentTiddler)$\"\"\">>>\n<$set name=\"tocghost-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"tocghost-item-selected\" emptyValue=\"tocghost-item\">\n<li class=\"post-stub\">\n<$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n<$reveal type=\"nomatch\" state=<<tocghost-state>> text=\"open\">\n<$button set=<<tocghost-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n<<tocghost-caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<tocghost-state>> text=\"open\">\n<$button set=<<tocghost-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<<tocghost-caption>>\n</$button>\n</$reveal>\n</$list>\n<$reveal type=\"match\" state=<<tocghost-state>> text=\"open\">\n<$macrocall $name=\"\"\"tocghost-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define tocghost-selective-expandable-empty-message()\n<<tocghost-linked-selective-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\">>\n\\end\n\n\\define tocghost-selective-expandable(tag,sort:\"\",itemClassFilter)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\">\n<ol class=\"post-list\">\n<$list filter=\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\">\n<$list filter=\"[all[current]tocghost-link[no]]\" variable=\"ignore\" emptyMessage=<<tocghost-selective-expandable-empty-message>>>\n<<tocghost-unlinked-selective-expandable-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"$itemClassFilter$\"\"\">>\n</$list>\n</$list>\n</ol>\n</$vars>\n\\end\n",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/themes/ghostwriter/tocghostMacro",
            "tags": "$:/tags/Macro $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modified": "20161110084617042",
            "created": "20161031140339462",
            "bag": "default"
        },
        "$:/themes/ghostwriter/Acknowledgements": {
            "created": "20161109145142879",
            "text": "This is an adaptation of the ''Ghostwriter'' Blog Theme by ''Rory Gibson'' at  https://github.com/roryg/ghostwriter for the TW5 platform. All the creative and design credits belong to him. It is a heavily popular and free theme for the ghost blogging platform. \n\nThis is a ''mobile responsive'', minimalist theme. The stylesheets are seperated out so that you can tweak to your likes. Some of the classes are redundant, I will get around to them //as and when possible//. \n\nThe other person I must furnish credits to is ''Zaphod Beeblebrox ''for the tip that enabled custom backgrounds for sidebar. Later I injected z-index to the same and found that it can be made to overlay the storyriver, which I found a neater alternative to pushing the content to a side. The stylesheet for displaying tiddler controls should be credited to ''Tobias Beer''. \n\nKudos to the group, especially Jan and Josiah, for their inputs and encouragement. I have tried to include most of the suggestions that came by. Be not shy to tell me about yours\n\nFinally, the obligatory note of thanks to'' Jeremy Ruston''",
            "title": "$:/themes/ghostwriter/Acknowledgements",
            "tags": "$:/irreverent-mudblood/ghostwriter",
            "modified": "20161110105943157"
        },
        "$:/themes/ghostwriter/topbarbtntemplate": {
            "created": "20161110024930642",
            "text": "<$button class=\"site-nav-item tc-btn-invisible\">\n\n</$button>",
            "title": "$:/themes/ghostwriter/topbarbtntemplate",
            "modified": "20161110031122949",
            "tags": "$:/irreverent-mudblood/ghostwriter"
        },
        "$:/themes/ghostwriter/pagination": {
            "created": "20161202043138190",
            "creator": "Riz",
            "text": "\\define paginate(discard:3)\n<a><$button class=\"tc-btn-invisible pages\">\n<$action-listops $tiddler=\"$:/StoryList\" $field=\"list\" $filter=\"[!is[system]!is[missing]!sort[modified]rest[$discard$]limit[3]]\"/>\n<$list variable='Target' filter=\"[!is[system]!is[missing]!sort[modified]rest[$discard$]limit[3]first[]]\"><$action-navigate $to=<<Target>>/></$list></$button></a>\n\\end\n<style>\n.emm-paginate {\ncounter-reset: paginate;\ntext-align: center;\n}\n.emm-paginate a:hover {\nborder-bottom:none;\ncolor:#fff;\n\n}\n.tc-btn-invisible.pages {\n\tborder: 1px solid #c1c1c1;\n\tpadding: 4px 8px;\n}\n.tc-btn-invisible.pages:hover {\nbackground:#a1a1a1;\n}\nbutton.pages::after {\n    counter-increment: paginate;\n    content:   counter(paginate) ;\n}\n</style>\n\n<div class=\"emm-paginate\">\n<a><$button class=\"tc-btn-invisible pages\">\n<$action-listops $tiddler=\"$:/StoryList\" $field=\"list\" $filter=\"[!is[system]!is[missing]!sort[modified]limit[3]]\"/>\n<$list variable='Target' filter=\"[!is[system]!is[missing]!sort[modified]limit[3]first[]]\"><$action-navigate $to=<<Target>>/></$list></$button></a>\n<<paginate 3>>\n<<paginate 6>>\n<<paginate 9>>\n<<paginate 12>>\n</div>",
            "title": "$:/themes/ghostwriter/pagination",
            "tags": "$:/tags/BelowStory",
            "modified": "20161202050759321",
            "modifier": "Riz"
        }
    }
}
知识众筹,欢迎参与
互联网科技手册
yes
yes
no
no
no
yes
no
yes
yes
yes
yes
yes
yes
yes
yes
yes
no
yes
no
yes
no

hide
hide
show
show
show
hide
hide


visible
visible
locked
usage
usage
readme
no
yes
no
try-out
no
contents
no
contents
contents
contents
yes
yes
$:/core/ui/ControlPanel/Theme
$:/core/ui/ControlPanel/Basics
$:/core/ui/ControlPanel/Plugins/Installed/Plugins
$:/core/ui/MoreSideBar/Plugins/Plugins
$:/core/ui/ControlPanel/EditorTypes
$:/core/ui/ControlPanel/Plugins/Add/Plugins
$:/core/ui/ControlPanel/Info
$:/core/ui/ControlPanel/Saving/General
$:/core/ui/MoreSideBar/System
$:/core/ui/SideBar/Recent
$:/core/ui/ControlPanel/Toolbars/ViewToolbar
open
close
close
close
close
close
close
yugongde

$:/core/modules/parsers/wikiparser/rules/wikilink.js
Home
{
    "tiddlers": {
        "$:/info/browser": {
            "title": "$:/info/browser",
            "text": "yes"
        },
        "$:/info/node": {
            "title": "$:/info/node",
            "text": "no"
        },
        "$:/info/url/full": {
            "title": "$:/info/url/full",
            "text": "file:///Users/apple/Desktop/ITJobsandSkillsmap20190519.html"
        },
        "$:/info/url/host": {
            "title": "$:/info/url/host",
            "text": ""
        },
        "$:/info/url/hostname": {
            "title": "$:/info/url/hostname",
            "text": ""
        },
        "$:/info/url/protocol": {
            "title": "$:/info/url/protocol",
            "text": "file:"
        },
        "$:/info/url/port": {
            "title": "$:/info/url/port",
            "text": ""
        },
        "$:/info/url/pathname": {
            "title": "$:/info/url/pathname",
            "text": "/Users/apple/Desktop/ITJobsandSkillsmap20190519.html"
        },
        "$:/info/url/search": {
            "title": "$:/info/url/search",
            "text": ""
        },
        "$:/info/url/origin": {
            "title": "$:/info/url/origin",
            "text": "file://"
        }
    }
}




































































loaded
Home

$:/themes/tiddlywiki/vanilla
{
    "tiddlers": {
        "$:/themes/tiddlywiki/snowwhite/base": {
            "title": "$:/themes/tiddlywiki/snowwhite/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
        }
    }
}
{
    "tiddlers": {
        "$:/themes/tiddlywiki/vanilla/themetweaks": {
            "title": "$:/themes/tiddlywiki/vanilla/themetweaks",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
            "text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
        },
        "$:/themes/tiddlywiki/vanilla/base": {
            "title": "$:/themes/tiddlywiki/vanilla/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n    border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    left: -50px;\n    top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    right: -80px;\n    bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: normal;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n    cursor: pointer;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour tag-foreground>>;\n\tvertical-align: text-bottom;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-tiddler-missing .tc-title {\n  font-style: italic;\n  font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n    height: 1.2em;\n    width: 1.2em;\n    margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg  {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n  fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n  fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n  fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n  fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n  fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n  fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n  fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n  fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n  fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg  {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down-language-chooser img {\n\twidth: 2em;\n\tvertical-align: baseline;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n    width: auto;\n    margin-bottom: 0px;\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical  {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical  {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical  {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n    display: block;\n    width: 100%;\n    text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n    flex: 1 0;\n    background: <<colour tiddler-editor-background>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n    white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n    background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n    padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n    flex: 3 1;\n    border-left: 0.5em solid <<colour muted-foreground>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tmax-width: 500px;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 28px;\n\tpadding: 14px 14px 14px 14px;\n\tborder: 2px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 14px;\n\tright: 14px;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: block;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground-colour: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-plugin-info-chunk h1 {\n\tfont-size: 1em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk h2 {\n\tfont-size: 0.8em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk div {\n\tfont-size: 0.7em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 1em 1em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n    vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder: 1px solid <<colour table-border>>;\n}\n\n.tc-chooser-item {\n\tborder: 8px;\n\tpadding: 2px 4px;\n}\n\n.tc-chooser-item a.tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-foreground>>;\n\tbackground-color: <<colour tiddler-link-background>>;\n}\n\n.tc-chooser-item a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
            "text": "15px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
            "text": "22px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
            "text": "14px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
            "text": "20px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storytop": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyright": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
            "text": "686px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
            "text": "960px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
            "text": "350px"
        },
        "$:/themes/tiddlywiki/vanilla/options/stickytitles": {
            "title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
            "text": "no"
        },
        "$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
            "title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
            "text": "fixed-fluid"
        },
        "$:/themes/tiddlywiki/vanilla/options/codewrapping": {
            "title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
            "text": "pre-wrap"
        },
        "$:/themes/tiddlywiki/vanilla/reset": {
            "title": "$:/themes/tiddlywiki/vanilla/reset",
            "type": "text/plain",
            "text": "/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n *    user zoom.\n */\n\nhtml {\n  font-family: sans-serif; /* 1 */\n  -ms-text-size-adjust: 100%; /* 2 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n  margin: 0;\n}\n\n/* HTML5 display definitions\n   ========================================================================== */\n\n/**\n * Correct `block` display not defined in IE 8/9.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; /* 1 */\n  vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9.\n * Hide the `template` element in IE, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n/* Links\n   ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n  background: transparent;\n}\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\n\na:active,\na:hover {\n  outline: 0;\n}\n\n/* Text-level semantics\n   ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9, Safari 5, and Chrome.\n */\n\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n */\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari 5 and Chrome.\n */\n\ndfn {\n  font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari 5, and Chrome.\n */\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n  font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n/* Embedded content\n   ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9.\n */\n\nimg {\n  border: 0;\n}\n\n/**\n * Correct overflow displayed oddly in IE 9.\n */\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n/* Grouping content\n   ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari 5.\n */\n\nfigure {\n  margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n  overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n/* Forms\n   ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n *    Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; /* 1 */\n  font: inherit; /* 2 */\n  margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10.\n */\n\nbutton {\n  overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8+, and Opera\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n *    and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n *    `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; /* 2 */\n  cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n  line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n *    (include `-moz` to future-proof).\n */\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; /* 1 */\n  -moz-box-sizing: content-box;\n  -webkit-box-sizing: content-box; /* 2 */\n  box-sizing: content-box;\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n  border: 0; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9.\n */\n\ntextarea {\n  overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n  font-weight: bold;\n}\n\n/* Tables\n   ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
            "text": "\"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", \"DejaVu Sans\", sans-serif"
        },
        "$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
            "text": "Monaco, Consolas, \"Lucida Console\", \"DejaVu Sans Mono\", monospace"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
            "text": "fixed"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
            "text": "auto"
        },
        "$:/themes/tiddlywiki/vanilla/sticky": {
            "title": "$:/themes/tiddlywiki/vanilla/sticky",
            "text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n``\n</$reveal>\n"
        }
    }
}
370px
50px
770px
0px
750px
686px
fluid-fixed
no
backup
hunter.html


classic
! 安全工程师技能图谱

!! 基础必备
  
!!! HTTP抓包与调试
*Firefox插件
   *Firebug(抓包与各种调试)
   *Tamper Data(拦截修改)
   *Live Http Header(重放功能)
   *Hackbar(编码解码/POST提交)
   *Modify Headers(修改头部)

*Fiddler
   *浏览器代理神器
   *拦截请求或响应
   *抓包
   *重放
   *模拟请求
   *编码解码
   *第三方扩展
      *Watcher(Web前端安全的自动审计工具)        

*Wireshark(各种强大的过滤器语法)
*Tcpdump(命令行的类Wireshark抓包神器)
*Python
   *urllib2
   
!!! 跳转

*服务端跳转
 *302 <?php header("Location: 3.php"); ?>
 *301 <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: 2.php"); ?>
 *u=urllib2.urlopen(url)后,u.url能得到服务端跳转后的地址

*客户端跳转

!!! Office 能力
*Word
*Excel
*PPT 
*yEd
*Visio
*FreeMind

!!! Linux 基础
*《鸟哥的Linux私房菜》

!!! Vim 基础
*[简明 Vim 练级攻略](http://coolshell.cn/articles/5426.html)

!!! Python 基础
*[官方文档](https://www.python.org/dev/peps/pep-0008/)
*[笨办法学 Python](http://learnpythonthehardway.org/book)
*《Python 核心编程2》

!!! 算法
*快排
*二分

!!! 正则表达式
*调试工具
   *Kodos
   *RegexBuddy
   *Regexper
*[《正则表达式 30 分钟入门教程》](http://deerchao.net/tutorials/regex/regex.htm)
*[《Python 正则表达式操作指南》](http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97)
*《精通正则表达式》

!!! 研发能力
*瀑布模型
   *需求->需求分析->设计->开发->测试->上线->运维/运营
*需求分析能力
*调试能力
   *定位 Bug
   *专业的工具与经验配合
   *真实模拟调试
   *缩小范围
      *构建自己的测试样例
      *关联模块一个个排除
      *Python单步调试
   *粗暴调试:print
*敏捷思想
   *快速迭代
   *任务拆细
   *v1原则:定义目标,优先完成v1
   *习惯 Wiki 记录

!!! 翻墙技能

!! Web安全

!!! Web服务组件
*![Web 服务组件层级图](http://blog.knownsec.com/Knownsec_RD_Checklist/res/web_component.png)
*[钟馗之眼](http://zoomeye.org)

!!! 安全维度
*漏洞
*风险
*事件

!!! Web安全标准
*OWASP
*WASC

!!! 实战环境
*XSS
*SQL
*i春秋
*Sebug + ZoomEye

!! 工具
!!! Firefox
*Firebug(调试JavaScript,HTTP请求响应观察,Cookie,DOM树观察等)
*Tamper Data(拦截修改)
*Live Http Header(重放功能)
*Hackbar(编码解码/POST提交)
*Modify Headers(修改头部)
*[GreaseMonkey](http://userscripts.org/scripts/show/119798) 
*NoScript(进行一些JavaScript的阻断)
*AutoProxy(翻墙必备)

!!! Chrome
*F12(开发者工具,功能==Firebug+本地存储观察等)
*SwichySharp(翻墙必备)
*[CookieHacker](http://evilcos.me/?p=366)

!!! Web2.0 Hacking
*[XSS'OR](http://evilcos.me/lab/xssor/)
*[XSSEE 3.0 Beta](http://evilcos.me/lab/xssee/)
*[Online JavaScript beautifier](http://jsbeautifier.org/)
*[BeEF](http://beefproject.com/)

!!! HTTP代理
*Fiddler(经典Web调试代理工具)
*Burp Suite(神器)
*mitmproxy

!!! 漏洞扫描
*AWVS
*Nmap
*Python自写脚本/工具

!!! 漏洞利用
*sqlmap(SQL注入利用最牛神器)
*Metasploit(最经典的渗透框架)
*Hydra(爆破必备)

!!! 抓包工具
*Wireshark(抓包必备)
*Tcpdump(Linux下命令行抓包)

!!! Sebug + ZoomEye

!!! Kali Linux
!!! 书籍资料
*《黑客攻防技术宝典(Web实战篇)》
*《白帽子讲Web安全》
*《Web前端黑客技术揭秘》
*《Web之困》
*《SQL注入攻击与防御》
*papers
   *[exploit-db.com/papers](http://www.exploit-db.com/papers/)
   *BlackHat/Defcon/XCon/KCon/国内各安全沙龙

!! 嵌入式安全

!!! 路由器安全
*基础
   *嵌入式Linux系统方面知识
   *开发系统互联参考模型-第三层网络层
   *MIPS/ARM汇编知识
   *VxWorks系统方面知识
   *JTAG调试接口规范
   *嵌入式系统交叉环境开发
   *路由器芯片方案提供商
      *博通
      *Atheros
      *TrendChip
      *ACROSPEED
      *IC+
      *瑞昱
      *...
*站点
   *[OpenWrt.org](https://www.openwrt.org/)
   *[routerpwn.co](http://routerpwn.com/) 
   *[see.sl088.com(Uboot_编译)](http://see.sl088.com/wiki/Uboot_%E7%BC%96%E8%AF%91)
   *[devttys0.com](http://www.devttys0.com/)

*工具
 *Binwalk
 *IDA Pro
 *gdb/gdbserver
 *qemu-system
 *qemu-user-static
 *Smiasm
 *Metasm
 *JTAG硬件调试器

!!! 摄像头安全
*[openipcam](http://www.openipcam.com/)
*[US-13-Heffner-Exploiting-Network-Surveillance-Cameras-Like-A-Hollywood-Hacker-Slides.pdf](https://media.blackhat.com/us-13/US-13-Heffner-Exploiting-Network-Surveillance-Cameras-Like-A-Hollywood-Hacker-Slides.pdf)

!!! 工控安全

!!!! 基础
   *工业生产环境的基本结构,如:SCADA、PCS
   *工业生产环境的信息安全风险点(可参考DHS出版物)
   *工控网络组态、逻辑开发、应用组态的基本技术方法
   *抓包、看RFC分析几个常规工业以太网协议,如:Profinet、Modbus
   *熟悉 PLC(记得买以太网模块)

!!!! 站点
 *事件跟踪分析
      *[plcscan.org](http://plcscan.org/blog/ )
      *[scadastrangelove.blogspot.kr](http://scadastrangelove.blogspot.kr)
      *[phdays.com](http://www.phdays.com/)
      *[scadasl.org](http://www.scadasl.org)
      *[scadahacker.com](https://scadahacker.com)
        *[Duqu](https://scadahacker.com/resources/duqu.html) 
        *[Stuxnet](https://scadahacker.com/resources/stuxnet.html)
        *[Havex](https://scadahacker.com/resources/havex.html)
 *标准协会/测试工具
   *[DHS CET套件](http://ics-cert.us-cert.gov/Assessments)
   *[NERC ES-ISAC](http://www.esisac.com/SitePages/Home.aspx)
   *[ICS-ISAC](http://ics-isac.org)
   *[NTSB美国国家工控测试床](http://energy.gov/oe/downloads/common-cyber-security-vulnerabilitiesobserved-control-system-assessments-inl-nstb)
   *[NIST SP 800-82](http://csrc.nist.gov/publications/nistpubs/800-82/SP800-82-final.pdf)
   *[ISA-99控制系统安全协会](http://isa99.isa.org/ISA99%20Wiki/Home.aspx)
   *[NERC CIP标准](http://www.nerc.com/pa/Stand/Pages/ReliabilityStandards.aspx)

!!!! 工具
*仿真类
	 *电力仿真软件testhaness
	 *Modbus仿真软件ModScan
	 *电力104协议仿真软件PMA
*测试类
	 *Wurldtech Achilles
	 *Codenomicon Defensics
	 *Spirent
	 *BPS
*源代码
	 *发现
	 **[plcscan](https://code.google.com/p/plcscan/)
	 **[modscan](https://code.google.com/p/modscan/)  
	 **[scan7](https://github.com/arnaudsoullie/scan7)
	 **[atimorin](https://github.com/atimorin)
	 **[Redpoint](https://github.com/digitalbond/Redpoint)
 
	 *操纵
	 **[modbus](https://www.scadaforce.com/modbus)
	 **[pymodbus](https://github.com/bashwork/pymodbus)
	 **[modbus-cli](https://rubygems.org/gems/modbus-cli)
	 **[libnodave](http://libnodave.sourceforge.net)
	 **[dnp3](https://code.google.com/p/dnp3)
	 *异常监测
	 **[snort-292-scada-preprocessors](http://blog.snort.org/2012/01/snort-292-scada-preprocessors.html) 
	 **[quickdraw](http://www.digitalbond.com/tools/quickdraw/)
 	 *[Fuzz](https://github.com/jseidl/peach-pit/blob/master/modbus/modbus.xml)

!!!! 其他
   *[ZoomEye工控专题](http://ics.zoomeye.org/) 
   *[Shodan工控专题](https://www.shodan.io/report/l7VjfVKc)
   *[网络空间工控设备的发现与入侵](https://github.com/evilcos/papers/blob/master/网络空间工控设备的发现与入侵.ppt)

!!! zoomeye.org
*[全球可以找到无数真实路由器/摄像头/工控设备等](http://www.zoomeye.org/search?q=app:%22MikroTik%20RouterOS%22&from=dork)

!! 研发清单
!!!! 编码环境
*pip
*Vagrant
*tmux/screen
*vim
*Markdown
*zsh + oh-my-zsh
*Python2.7
*[Django1.4](http://djangobook.py3k.cn/2.0/)
   *[Django Debug Toolbar](http://django-debug-toolbar.readthedocs.org/en/latest/)
   *其他框架
      *web.py
      *Flask
      *Tornado
*node.js
*Ubuntu/Gentoo/Centos
*ipython
*版本控制
   *废弃SVN,全面拥抱Git
   *GitLab
*Nginx+uWSGI


!!!! Python
*官方手册

!!!! Linux/UNIX
*书
   *《鸟哥的Linux私房菜》
   *《Linux Shell脚本攻略》
   *《UNIX编程艺术》
   *《Software Design 中文版》(01/02/03版)
*Linux 作为电脑默认操作系统

!!!! 前端
*了解 DOM
   *《JavaScript DOM编程艺术》
   *前端安全必要基础
*库
   *jQuery
   *D3.js
   *ECharts
   *Google API
   *ZoomEye Map组件
   *AngularJS
   *Bootstrap

!!!! 爬虫进阶
*代理池
*网络请求
   *wget/curl
   *urllib2/httplib2/requests
   *idea scrapy
*验证码破解
   *pytesser

!!!! 调度
*crontab是最原生的定时调度
*基于redis实现的分布式调度
*基于rpyc实现的分布式调度
*celery/gearman等调度框架

!!!! 并发
*线程池
*协程
   *gevent
*多进程
   *os.fork
   *idea multiprocessing

!!!! 数据结构
*JSON
*cPickle
*protobuf

!!!! 数据存储及处理
*数据库
   *MySQL
   *MongoDB
   *Cassandra
   *Hadoop体系
   *Redis
   *Sqlite
   *bsddb
   *ElasticSearch
*大数据处理
   *Hive
   *Spark
   *ELK
      *ElasticSearch
      *Logstash
      *Kibana

!!!! DevOps
*SSH证书
*Fabric
*SaltStack
*puppet
*pssh/dsh
*运维进阶

!!!! 调试
*pdb
*logging
*Sentry
*strace/ltrace
*lsof
*性能
   *Python内
      *timeit
      *cProfile
      *[Python性能分析指南](http://www.oschina.net/translate/python-performance-analysis)
   *Python外
      *top/htop/free/iostat/vmstat/ifconfig/iftop...

!!!! 算法
*分词
*贝叶斯
*神经元
*遗传算法
*聚类/分类
*...

!!!! 持续集成
*自测试
   *nose
*Jenkins

!!!! 安全
*[《程序员与黑客》](http://www.infoq.com/cn/presentations/programmers-and-hackers)

!!!! 协作
*Trello/Slack/Tower/微信/立会

!! 设计思想
*人人都是架构师:具备架构思想是一件多酷的事
*实战出真知
*如何设计
   *[任务架构设计变迁](http://blog.knownsec.com/Knownsec_RD_Checklist/res/arch_design_evolution.pdf)
   *松耦合、紧内聚
   *单元与单元属性
   *生产者与消费者
*结构
   *队列
   *LRU
*分布式
   *存储
   *计算
*资源考虑
   *CPU
   *内存
   *带宽
*粗暴美学/暴力美学「run it优先」
   *大数据,找到规律
   *打通整体,洞察问题
   *摆脱繁枝末节的束缚
   *快速迭代出伟大的v1
*一个字总结 —— 美

!! 牛人1,2,3
*1研究:有足够洞察力
*2研发:Hack Idea 自己有魄力实现
*3工程:需要实战、需要工程化

!! 移动安全
!! 系统安全
!! 反病毒
!! 云安全
*DDOS
*接口安全
**验证
**越权
**校验 
	


岗位职责: 

1. 收集并分析市场和产品的安全需求,完成架构设计;

2. 制定相关技术演进的roadmap,以及实施计划;

3. 设计并指导开发安全解决方案,包括但不限于:设备安全、应用安全、Web安全;

4. 深入理解产品,增强产品全生命周期的安全性,包括:需求、设计、实现、测试、生产、维修等;

5. 设计并开发安全基础设施,包括但不限于:安全库、安全操作系统、安全应用、系统安全等;

6. 设计设备的安全方案,包括但不限于:启动、调试、升级、通信、存储、生产、维修;

7. 设计系统安全方案(包括Linux、Android等),以及APP安全加固方案;

8. 设计数字版权保护系统(DRM)方案,并指导开发;

9. 了解各类攻击机制,能制定安全审计策略和方案;

10. 跟踪国内外最新安全技术动态,为公司的产品和业务系统安全进行评估以及漏洞追踪。

任职要求:

1. EE,CE,CS或同等专业本科及以上学历,8年以上安全开发经验,2年以上安全架构经验;

2. 扎实的密码学基础,能够灵活应用密码学解决实际问题;

3. 丰富的MCU/SoC安全开发经验,包括但不限于:安全引擎、启动、调试、存储、升级、生产等;

4. 深入理解可信计算平台的技术,如TrustZone、SGX等,并熟悉GPTEE框架;

5. 拥有系统安全实践经验,如Linux、Android、iOS,并深入理解各种系统安全优缺点;

6. 拥有一些领域的安全攻防经验,如:网络及通信安全、隐私保护、数字版权保护等;

7. 深入理解APP、Web的安全攻防技术;

8. 良好的沟通协调能力,以及较好的驱动力;

9. 良好的学习能力及团队领导力,喜欢挑战。

岗位职责:

1、负责公司产品和业务的安全测试和安全加固,引导开发人员修复安全问题;

2、通过技术手段优化SDLC不同阶段的工作,如需求评审、漏洞扫描等;

3、推动代码安全审计、自动化安全扫描等,提高安全测试的覆盖率和效率;

4、主导安全平台建设,安全平台开发,WAF和反爬开发。

岗位要求:

1、计算机本科毕业,5年以上安全工作经验,3年以上安全产品开发经验;

2、熟悉常见漏洞及原理,熟悉对应的攻击及防御技术;

3、备编程能力:例如Java、Python、lua等,熟悉ELK。
工作职责:

1、负责原创漏洞挖掘,以及对出现的0day漏洞事件进行追踪分析

2、跟踪国际/国内安全社区的安全动态,进行安全漏洞分析、研究与挖掘

3、各种网络、系统及应用的安全攻击和防御技术研究

4、恶意样本相关技术研究,黑产组织行为分析研究

任职资格:

1、能主动关注国内外安全攻防技术,并在自己擅长和兴趣的领域能够进行深入的学习、研究

2、 熟悉网络协议, 能独立分析恶意流量

3、熟悉包括但不限于Windows、Linux、移动终端上的主流攻防手段、技术、工具等;

4、对Web安全、恶意软件、服务端安全、系统安全、物联网安全等其中几项有深入研究;

5、至少熟练一门编程语言;

6、具备良好的团队沟通、协作能力

工作职责:

1.负责ESP设备的运维工作;

2.负责日志的分析;

3.负责日报的编写和报送。

任职资格:

1、计算机、信息安全等相关专业;

2、1年以上安全运维相关工作经验;

3、了解各种网络安全设备的安全配置,如:防火墙、IDS/IPS、抗DDOS攻击、负载均衡、上网行为管理、代理设备、VPN(SSL VPN、IPSEC VPN)、WEB应用防火墙、网络准入控制,具有实际维护经验;

4、具有网络安全事件排查和响应处理经验。
职位职责: 

1、负责项目的技术选型,保证软件开发进度和质量 

2、指导团队完成技术的迭代更新,制定路线图 

3、技术上指导工程师进行安卓HAL层、Linux驱动层开发,涉及相机、USB、以太网、Wifi等;同时直接参与到一些一线开发工作 

4、与合作伙伴,内部,外部的客户保持沟通 

5、设计,开发,测试,部署,维护以及改进软件系统 

职位要求: 

1、有Android手机、平板或其他智能设备开发经验 

2、专家级的Linux内核与Android框架知识,深入理解Android SDK,NDK,API 

3、熟练使用Linux开发工具链,Android Studio,以及Android Native开发工具链 

4、有Linux驱动开发经验,设备点亮,BSP,内核裁剪、配置经验,熟悉内核问题调试 

5、有常用设备接口知识,及驱动开发经验,包括:I2C, I2S, MIPI, SDIO, SPI, HDMI, PCI等 

6、熟练使用C/C++,Java 

7、了解Android系统下的性能测试与优化 
!!安卓应用开发工程师岗位描述1:

职位职责: 

1、负责Android客户端产品的整体架构设计和研发、优化和改进; 

2、负责跟进移动平台终端技术,设计和实现新产品和功能; 

3、负责Android客户端产品问题的排查定位。 

职位要求: 

1、本科及以上学历,计算机、软件开发相关专业,3年以上Android 
App研发工作经验; 

2、熟悉Android App开发技术,熟练掌握Android开发工具和测试工具的使用; 

3、熟悉面向对象化编程思想和设计模式,有扎实的Java语言基础; 

4、具备良好的沟通协调能力,能与团队保持良好沟通; 

5、具有良好的分析问题和解决问题的能力,勇于面对挑战性问题; 

6、具有良好的自学能力,善于研究新兴的技术; 

7、有Kotlin、Flutter相关经验的优先考虑。


!!安卓应用开发工程师岗位描述2:


岗位职责:
1. 负责安卓客户端开发;

2. 根据产品的需求进行Android产品的开发,对相关模块做重构和优化; 

3. 对Android平台开发技术进行研究,定位和解决一些技术上的疑难问题; 

4. 负责移动平台新技术研究、功能扩展,现有开发方法的改进;

5. 根据项目需求进行学习并快速掌握技巧,有良好的沟通力和协作能力加强团队的建设。

任职要求:

1. 至少3年以上Android应用开发经验,能够独立负责移动应用开发项
目;

2. 熟练掌握git,熟练掌握android studio开发工具及各种性能调优; 

3. 熟练掌握Android的API,理解Android的体系结构,掌握Android中界面绘制,后台运行,数据存储等的原理,熟悉xml,http,TCP/IP,SOCKET等协议;

4. 能够建立编码规范,并按照规范进行代码编写,精通各种重构策略;

5. 具备积极进取踏实负责的工作态度,强烈的团队合作意识, 能承受工作压力;
关于编辑内容的几点说明(__请点击编辑按钮看左栏内容与右栏内容的对照__):

!!关于标题和段落
1,不同段落之间要分行,正式显示出来的文本才不会混在一起。

2,一级标题的前方加一个 __英文输入状态__下的感叹号 ! 二级标题加两个!!,如下示范:

! 一级标题(前面的!是英文状态输入的)

!! 二级标题

!一级标题(错误示范,前面的!是中文状态输入的,无效)

!!关于创建链接

链接到内部文件:  [[显示的内容是这样的|首页]]  

也可以是这样的:[[首页]]

链接到网址:[[这样显示的|https://xy185.github.io]]

英文状态下的[ [ , 还有]],内容中间用   |    竖线分隔开。

可以把上面的内容复制过去,然后修改  |  前后的内容。

图片链接的方法:  [img[这个地方替换为图片网址链接]]   

你可以在右侧的【工具】-【导入】这个地方导入你的图片,这样图片就会存在在文件里。

注:导入的图片请拼音命名,然后把__文件名.jpg__  或者__文件名.png__等内容填写到链接处。


示例(实在不会的话扫描联系我啊):

[img[yugongde.jpeg]]

测试岗位就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。



测试有前端测试和后端测试的区别,测试的具体内容有功能方面的测试,有性能方面的测试。


!!![[测试领域]]技能图谱

!!测试常见岗位

*	[[测试工程师]]
*	[[测试开发工程师]]
*	[[功能测试]]
*	[[性能测试]]
*	[[自动化测试]]
*	[[测试经理]]
职位职责: 

1、深度参与产品研发项目, 协同产品经理、业务研发、用户反馈团队优质交付产品; 

2、参与质量体系规划、建设; 

3、线上线下故障追踪及分析; 

4、完善研发过程中质量和效率问题的发现机制, 并提出明确改进意见。 

职位要求: 

1、计算机相关专业,本科及以上学历; 

2、认可快速发展阶段的移动互联网公司及文化; 

3、优秀的产品意识, 对市场上典型App有自己的想法和改进方案; 

4、快速适应和学习能力、热爱质量效率工作; 

5、熟练使用常用客户端、服务端开发/测试工具; 

6、能够独立把握一个端(安卓/iOS)的产品迭代工作。 
! 测试技能图谱

!! 代码静态分析
*Sonar
*PMD
*Infer
*Android
**findbugs
**AndroidLint
**CheckStyle
*iOS
**scanbuild
**oclint
  
!! 覆盖率分析
*Android
**Jacoco
**EMMA
*iOS
**gcov

!! 自动化测试
*Appium
*Calabash
*Macaca
*MonkeyTalk
*RobotFramework
*Android
**Robotium
**Uiautomator
**Espresso
**Selendroid
**Instrumentation
**MonkeyRunner
**Cafe
*iOS
**WDA
**XCUITest
**KIF
**Frank
*Web
**selenium
  
*自动遍历工具
**AppCrawler
**CrashMonkey4Android
**CrashMonkey4iOS
**SwiftMonkey

!! 接口测试
*Rest-Assured
*SoapUI
*JMeter
*RobotFrameWork
*PostMan
*Swagger
!! 常用工具

!!! 代理工具
*Charles
*Fiddler
*BurpSuite
*AnyProxy

!!! 嗅探
*TcpDump
*WireShark

!!! 弱网模拟
*通用
**ATC
**Charles
**Fiddler
**BurpSuite
*iOS
**iOS developer mode
*Web
**Chrome

!!! 移动端专项测试
*Android
**monitor
**MAT
**VisualVM
**dumpsys命令集
**/proc/
**top
**adb bugreport
**battery*historian
**腾讯GT
**网易Emmagee
*iOS
**Instruments工具集
*硬件设备
**安捷伦
**高速(慢速)摄像机
*专项分析sdk
**LeakCanary
**BlockCanary
**MLeaksFinder
  
  
!! 性能测试
*客户端性能测试
**TraceView
**Instruments

*服务端性能测试
**JMeter
**Gatling
**nGrinder
**SystemTap
**DTrace
**Perf
**FlameGraph

!! 安全测试
*移动端安全
**Frida
**Cydia Substrate
*Android
**Drozer
**apktool
**dex2jar
**XPosed
*iOS
**IDB
**otool
**lldb
**iExplorer
**libimobiledevice
*服务端安全测试
**BurpSuite
**WVS
**ZAP
 
!! 持续集成
*通用工具
**Jenkins
**Travis CI 
**fastlane
*Android
**mvn
**gradle
*iOS
**Cocoapods
**xcodebuild
**xcrun
**plist
!! 测试环境管理
*Android Emulator
*STF
*Appium Grid
*WebPageTest
*Selenium Grid
*Genymotion
*BlueStacks
*Docker

!! 常用云测平台
*MQC
*MTC
*Testin
*SauceLabs


!! 软技能
*知识管理
**Confluence
**Wiki
**GitBook
**TesterHome
*需求管理
**Jira
**Redmine
*用例与Bug管理
**Jira
**Redmine
**BugFree
**TestLink
*架构能力
**Git
**GitLab
**GitHub
**JVM
**Instrument技术体系
职责描述

1.负责测试技术解决方案研究与落地

2.参与团队测试技术人才的培养,带动学习氛围

3.负责测试团队技术体系建设

4.负责测试团队测试平台产品的架构设计和优化

5.研究/吸收前沿测试技术,结合公司具体情况,引入和推广适合公司需要的新技术

岗位要求

1.计算机相关专业,本科及以上学历,六年以上开发或测试开发工作经验

2.熟悉测试流程规范,对DevOps有深入理解并具有落地实践经验

3.精通C++/PHP/JAVA/Go/Python至少一种语言

4.具备良好的沟通协调和团队协作能力,和优秀的发现问题、分析问题、解决问题的能力,有强烈的责任心和积极主动的工作态度

具备以下经验者优先:

1.具备服务端性能测试经验、性能评测经验,并能基于性能问题定位和调优,规划开发性能测试工具,支撑性能优化提升经验的优先;

2.了解大数据业务,具有Hadoop、Spark的应用经验,并具有大规模分布式应用测试经验,有主导大型系统全流程质量保障成功经验优先
!!测试开发工程师岗位描述1:

岗位要求:

1. 计算机相关专业毕业,本科以上学历

2. 至少三年软件开发,白盒或者自动化测试经验

3. 熟悉java或者python,熟练编写测试代码

4. 熟练使用postman或者jemeter等测试工具

5. 具有前端开发经验者优先

工作职责:

1. 编写维护执行自动化测试用例

2. 设计实现开发测试工具和测试框架

3. 实现ui自动化和接口自动化

4. 编写接口自动化测试用例

5. 有测试平台化开发相关的测试经验

!!测试开发工程师岗位描述2:

职位描述:

工作职责:

1.负责APP测试工作,保证产品的质量;

2.制定测试方案,编写测试用例;设计自动测试脚本;

3.参与测试分析/测试执行/测试跟踪,定期汇报项目进展情况;

4.对Bug进行跟踪管理;

5.积极沟通,推动问题解决。

任职资格:

1.计算机或信息工程相关专业,统招一本及以上学历;

2.熟悉测试理论,熟悉基于WEB的网站测试方法,有测试经验优先;

3.熟悉WEB应用开发相关知识,熟悉PHP,html等相关语言优先;

4.熟悉SQL语言以及MYSQL数据库操作者优先;

5.具有良好的团队合作意识,有高度的责任心。

 * [[测试技能图谱]]

 *[[移动无线测试技能图谱]] 
陈敬雷

[img[chenjinglei.jpeg]]


十几年互联网从业经验,曾先后就职于用友、中软、凡客、乐蜂网(唯品会)、猎聘网、人民日报(灵思云途)、北京万朝科技等公司

在过往职业生涯中曾任架构师、首席技术官、首席科学家等职务,在To B端、To C端、电商、职场社交招聘、内容文娱、营销行业有着丰富的经验

在技术领域,尤其在大数据和人工智能方向有丰富的算法工程落地实战经验,其在猎聘网任职期间主导的推荐算法系统项目获得公司优秀项目奖,简历推荐效果得到5倍的提升。

2018年,陈敬雷开始创业,创办了【充电了么】平台,专注于为职场人士提供大数据和人工智能职业在线教育

目前研发了充电了么app和网站www.chongdianleme.com,用深度学习算法、nlp、推荐引擎等技术来高效提升在线学习效率。

另外,陈敬雷先生也是中国首席数据官联盟专家委员
! 程序员技能图谱


!! 简介

''程序员技能图谱''是由极客邦科技 [[Geekbang|https://www.geekbang.org/]]发起的一个技术社区开源项目,志在汇集、整理、共建泛 IT 技术领域(人工智能,前端开发,移动开发,云计算,大数据,架构,运维,安全,后端开发,测试,智能硬件等)及互联网产品、运营等领域学习技能图谱,帮助程序员梳理知识框架结构,并尝试提供路径指导和精华资源,方便技术人学习成长。

除非特别声明,本开源项目所有领域技能图谱内容均只代表所参与贡献的技术人员个人立场,与其公司背景无关。

本项目出发点旨在抛砖引玉,有任何不同意见和反馈,请提交 [[Issue|https://github.com/TeamStuQ/skill-map/issues]] 讨论,或发送邮件至 [[Raymond@geekbang.org|mailto:Raymond@geekbang.org]],编辑会及时跟进或组织讨论,并持续更新内容版本。请理解并支持,感谢!: )

目前技能图谱已有如下领域,点击标题可以预览文本文件可以在[[图片预览版|技能图谱-思维导图版合集]]以技能树形式预览图片文件:




!具体领域包括:
---
图片版链接是 [[技能图谱-思维导图版合集]]




 !![[技术管理领域]]

!![[Web前端领域]]

 !![[移动开发领域]]

 !![[Server 后端领域]] 



 !![[安全技能图谱]]

!![[智能运维领域]]

!![[测试领域]]


!![[开发语言领域]]

 !![[开发工具领域]]

 !![[智能硬件领域]]

!![[大数据领域]]

 !![[人工智能领域]]

!![[云计算领域]]


!!''以及正在建设中的项目包括'':

* 服务端开发

* 分布式数据库开发

* IoT 物联网

* PHP 语言

* Swift 语言

* Objective-C 语言

* C++ 语言

* C# 语言

欢迎贡献新领域技能图谱,或推荐学习路径与资源,有任何改进意见和建议,也可以建立 issue 讨论或发送邮件至 Raymond@geekbang.org。所有参与该项目的社区朋友均有机会获赠礼品/技能图谱纸质印刷 A1 版。

!! 改进目标

1. 继续细化各领域的技能节点

2. 提供各领域的参考学习路径

3. 推荐各知识点相关优质资源

!! 加入我们

* 提交图谱:直接提交 Pull Request,或者联系项目负责人雷蒙德,可发邮件至 Raymond@geekbang.org

* QQ群讨论:254521819,加群时请备注“姓名+职业角色”,如“Ray+前端”

* 微信群讨论:请加StuQ小助手(StuQxiaozhushou)并备注“技能图谱”,小助手会邀请您入群

!! 版本信息

!!! V 1.0

* 更新稳定版本,新增 IT 职业技术重要领域

!!! v 0.2.0

* IT 技术各主要领域基本覆盖

!!! v 0.1.2

* 云计算领域新增:OpenStack,容器技术

* 移动开发领域新增:iOS 开发

* 测试领域新增:移动无线测试

* 智能硬件领域新增:嵌入式开发

!!! v 0.1.1

* 程序员技能图谱第一版发布

!! 版权声明

本技能图谱遵循 [[CC-BY-NC-SA 4.0|https://creativecommons.org/licenses/by-nc-sa/4.0/]] 协议。

商业转载必须征求极客邦科技 Geekbang 授权同意,转载请务必注明[[出处|http://www.stuq.org/subject/skill-map/]]。 

极客邦科技 Geekbang 保留最终解释权及法律追究权力。

欢迎关注极客邦科技 Geekbang 推出的「极客时间」App,获取更多技术干货。

[img[GeekTime-QRCode-200X200.png]]

!! 特别鸣谢

「程序员技能图谱」开源项目能有精美的展示图片,背后是设计同学在百忙之中配合内容编辑不厌其烦的设计、更新和修正,在此特别鸣谢以下设计同学的贡献(排名不分先后):

陈接(Jack)、杨旸(Tammy)、谢汝冰(Ice)、王慧娟(Amy)、王硕映(Ray)、张卓(Leslie)。


!! 赞助声明

程序员技能图谱项目接受企业或者个人赞助,赞助经费主要用于覆盖图谱编辑、设计、印刷和运营成本。

赞助合作请发邮件至 Raymond@geekbang.org 。


---

本文件内容来自:Github 开源项目地址:[[https://github.com/TeamStuQ/skill-map|https://github.com/TeamStuQ/skill-map]]。

本文件来自于:https://xy185.github.io

另外,你可能还需要知道:

[[编辑示范说明|编辑示范说明]]

[[文档使用指南]]

---

本文件采用[[内容分享声明|内容分享声明]]中的第一种声明:

[[署名-相同方式分享-维权代理|内容分享声明]]



!  ''大数据工程师技能图谱''

作者:

* [[@祝海林|https://github.com/allwefantasy]] |丁香园大数据技术专家
* @高扬|欢聚时代资深大数据技术专家


! 大数据通用处理平台
*Spark
*Flink
*Hadoop
*Drill
  
! 分布式协调
*ZooKeeper

! 分布式存储
*HDFS
*Alluxio(tachyon)
*Ignite

! 存储格式
*Parquet
*ORC
*CarbonData
*Kudu  

! 数据库
*HBase

! 资源调度
*Yarn 
*Mesos
*Kubernetes  
  
! 工作流调度
*Oozie 
*Azkaban 

! 机器学习工具
*Mahout
*Spark Mlib
*TensorFlow 
*DeepLearning4J
*Torch
*Theano
*Caffe
*MxNet
*Keras
*CNTK
*Amazon Machine Learning
*DMTK (微软分布式机器学习工具) 

! 数据安全
*Sentry
*Apache Eagle 

! 部署工具
*Cloudera Manager
*Ambari

! 数据分析/数据仓库(SQL类)
*Pig
*Kylin
*Presto
*Impala
*Hive
*Spark SQL/DataFrame/DataSet
*Phoenix
*ELK
**ElasticSearch
**Logstash
**Kibana

! 消息队列
*Kafka(纯日志类,大吞吐量)
*RocketMQ 
*ZeroMQ
*ActiveMQ
*RabbitMQ

! 流式计算
*Storm/JStorm
*Spark Streaming
*Fink

! 日志收集
*Scribe
*Flume
*Sqoop

! 编程语言
*Java/Scala
*Python
*R

! 数据分析挖掘
*MATLAB
*SPSS
*SAS


! 数据探索/可视化
*R
*D3.js
*ECharts
*Excle
*Tableau
*Zeppelin
*Hue


! 机器学习

!! 机器学习基础
*聚类
*时间序列
*推荐系统
*回归分析
*文本挖掘
*决策树
*支持向量机
*贝叶斯分类
*神经网络

! 算法
!! 一致性
*paxos
*raft
*gossip

!! 数据结构
*栈,队列,链表
*散列表
*二叉树,红黑树,B树
*图

!! 常用算法
*排序
**插入排序
**桶排序
**堆排序
**快速排序
*最大子数组
*最长公共子序列
*最小生成树
*最短路径
*矩阵的存储和运算

! 云计算
*云服务
 **SaaS
 **PaaS
 **IaaS
*OpenStack
*Docker

!!大数据架构师职位描述1

岗位职责:

1.负责公司大数据方向的整体架构设计,结合公司实际业务情况进行技术选型;

2.负责数据平台产品的整体评估、设计、架构及关键模块的开发;

3.负责架构优化及系统关键模块的设计开发,协助团队解决开发过程中的技术难题;

4.参与数据开发规范制定。



任职要求:

1.统招本科以上学历,至少5年以上大数据领域工作经验;

2.负责过大型数据平台或数据仓库设计,具有扎实的大数据和数据仓库的理论功底;

3.对Hadoop的大数据体系有深入认识,对Hadoop、Hive、HBase、Spark、Storm、 Kafka、ES等有实际应用研发经验,读过关键源码;

4.很强的学习、分析和解决问题能力,良好的团队意识和协作精神,有较强的内外沟通能力;

5.有数据工厂、实时计算、WA、广告平台(DSP/DMP)等类型产品的开发经验优先。


!!大数据平台架构师,职位描述2

工作职责: 

1、负责基于Hadoop/Spark等生态系统的大数据平台的架构设计、技术选型、搭建、开发、管理、监控和性能调优,保证集群高效稳定运行,对数据应用提供数据存储、查询引擎、实时计算、元数据管理的架构设计; 

2、系统核心部分代码编写、指导和培训工程师、不断进行系统优化;
 
3、跨团队/部门协作,系统分析并解决各类大数据平台相关的运行或数据问题; 

4、打造有行业竞争力的系统,能够支撑快速发展的数据业务。 



任职资格: 

1、本科及以上学历,3~8年或以上的大数据从业经验; 

2、有大型分布式系统设计经验,负责过海量数据平台上高可用、高性能分布式系统的架构设计; 

3、精通任意一门编程语言,对大数据基础架构和平台底层原理有深度理解和丰富开发经验, 对复杂系统的性能优化和稳定性提升有一线实战经验,具备相关产品(Hadoop、Hive、HBase、Kafka、MapReduce、Spark等)项目应用研发经验;对开源社区有贡献者优先; 

4、熟悉分布式存储和NoSQL数据库技术(如MonogoDB、Redis、Cassandra等),有实际生产项目应用经验; 

5、具有一定的项目规划和决策能力,善于捕捉业务需求、架构设计存在的问题,并给出有效的解决措施和方法。
!!大数据开发工程师岗位描述1

岗位职责:

1、负责数据源梳理,设计数据处理方案,构建模型,优化数据平台,实现实时与离线数据开发与分析。

2、与产品经理配合开发公司的大数据分析产品,实现对公司内外部的数据与运营支持。

3、响应运营、市场、产品、审计、信贷、风控、财务等业务部门数据需求,构建大数据分析与应用系统。

4、参与大数据平台建设,优化数据服务能力。 



岗位要求:

1、三年以上开发工作经验;

2、熟练使用python、java、scala等语言中的至少一种;

3、有大数据开发经验,对Hadoop、spark、flink、Hbase等大数据生态系统深入熟悉和理解,;

4、计算机、应用数学、统计、运筹学等学科本科以上学历;

5、严谨的工作态度,突出的分析和归纳能力,优秀的沟通表达能力 

!!大数据开发工程师岗位描述2

职位职责: 

1、支持业务需求,基于海量数据实现数据采集、清洗入库、统计计算、Web展示。 

2、主要负责流式实时计算分析和离线数据统计分析 

3、主要实现编程语言为Scala/Java/Python; 

职位要求: 

1、本科及以上学历,计算机、通信等相关专业,两年及以上全职工作
经验; 

2、有扎实的编程能力,有优秀的设计和代码品位,有独立的代码实现能力 ; 

3、深刻理解计算机原理,有良好的数据结构和算法基础; 

4、熟悉数据采集、清洗入库、统计计算、Web展示核心要点,可实现指标计算需求; 

5、熟悉常用的开源组件:Hadoop/Hive/Spark/Storm/Flink,并了解其特性和使用场景优先; 

6、优秀的理解沟通能力,能快速理解业务背景,对数据敏感,有数据挖掘、数据分析、分布式计算、业务推荐开发能力者优先 
一、岗位职责:

1、负责带领大数据团队制定合理的大数据开发市场发展战略与大数据服务策略,并带领团队有效执行,确保目标的达成;

2、负责海量数据处理和高性能分布式计算的架构设计,深入研究大数据业务相关运维技术;

3、负责大数据处理和分析的核心模块的研发,完成平台搭建、调试、集成及实施;

4、设计实现分布式集群的运维、监控和管理平台;对Hadoop生态组件及相关技术组件的性能调优;制定Hadoop整体集群使用规范,规范Hadoop平台开发及应用;

5、参与公司大数据平台整体规划, 支撑公司不同业务线对数据收集、整理、统计和学习等需求;

6、完善和优化公司大数据采集、处理、分析和建模等流程。

7、有较好的团队管理和沟通能力,较强的责任心和事业心。

任职资格:

1、本科及以上学历,4年以上工作经验,至少一个完整的大数据规划项目经验;

2、熟悉Hadoop体系结构、对Hadoop生态系统有较全面了解,具有大型hadoop平台(项目)开发和实施经验;

3、擅长hadoop生态系统各个组件的运用和调优, 如Spark、hadoop、hbase、hive、flume、sqoop等,具备海量数据处理经验,熟悉HBase/Hive/MR开发及优化,熟悉storm/spark steaming等流式计算架构;

4、具有优秀的团队合作精神,富有激情和创造力,善于沟通协调,能够有效地组织和推进跨职能、跨团队的合作项目。
第一份职位描述:

岗位职责:

1、负责大数据部的研发及管理工作。根据公司与信息技术部目标,制定内部方向,并推动落地与执行。

2、负责大数据平台的架构整体规划和设计,推动CDH大数据平台的研究与应用。解决大数据开发过程中的技术难点和大数据的安全与隐私保护。

3、负责用户行为挖掘、产品改进和内部数据中间层建设以及日常报表开发。

4、配合其他部门完成营销、风控、交易等核心产品设计与开发。

任职要求:

1.计算机、软件工程等相关专业,本科以上学历; 8年以上分布式系统、大数据相关工作经验。

2.具有海量数据挖掘、数据建模、机器学习相关的应用型项目实践经验; 有用户行为分析、业务建模、AI模型平台等方面经验者优先。

3、精通Hadoop、Spark、hive、Hbase等主流的大数据技术;熟悉java或scala,会Python、R语言的优先考虑。

4、良好的管理经验。如组织建设、绩效考核、团队培养与成长。



!!第二份职位描述:

职位描述:

1、带领数据团队,构建业务指标体系,建立和完善日常业务报告体系,能够及时、准确、完整地披露业务的运作情况 ; 

2、参与数据仓库架构设计与数据开发,建设共享数据仓库 ; 

3、通过专项分析,输出专项分析报告,为业务模块的决策和产品方向提供数据支持 ; 

4、参与数据底层的工具、平台、部署流程等技术体系建设的研发工作。 

职位要求: 

1、统招本科及以上学历,计算机相关专业; 

2、熟悉数据仓库模型设计方法论,并有实际模型设计及ETL开发经验 ; 

3、掌握大型数据库开发技术,如Oracle、Teradata、DB2、Mysql等等掌握至少一种,灵活运用SQL实现海量数据ETL加工处理与查询性能调优; 

4、熟悉常用的数据挖掘、分析的工具和方法,有数据挖掘工作经验,熟悉linux平台,精通shell/c(c++)/php/python/等脚本语言的一种或多种,编码基本功扎实 ; 

5、有团队组建经验和管理经验。
 *[[大数据技能图谱]]

 *[[Hadoop技能图谱]] 
职位描述:

岗位职责:

根据公司整体战略目标,跟踪行业大数据产品动向,组织规划集团大数据产品工作和研发工作;

带领团队负责产品的研发管理和迭代计划,协调开发资源,保证产品研发进度;

负责数据基础架构和数据处理体系的升级和优化,不断提升系统的稳定性和效率,为公司的业务提供大数据底层平台的支持和保证;

与业务部门沟通需求,并提出解决方案;与公司其他部门或其他项目组保持良好协作,确保项目良好运转;

培养和建立公司的大数据团队,对团队进行技术指导。

岗位要求:

本科或以上学历,10年以上相关工作经验,5年以上知名大型互联网公司大数据相关工作经历;

深入理解大数据应用相关技术的研发工作,能够根据产品特性研发出符合客户需求的产品;

精通大数据平台架构技术,对于大数据应用产品有丰富项目经验;

具备较好的研发过程管理和控制的技能,包括进度安排和控制、风险控制、质量管理、配置管理等;

具有主动性,具有大局观,具有创业精神。
职位描述:
1. 参与产品测试的全流程,包括参与需求分析、设计评审,制定测试计划,设计和执行测试用例,进行缺陷跟踪和软件质量分析等;

2. 根据需求进行测试设计及测试用例的编写;

3. 具备代码阅读能力、基本的脚本能力;

4. 执行测试用例并进行bug的跟踪,根据测试结果完成测试报告;

5. 发现工作中的效率提升点,开发工作中需要的测试工具。



任职资格:

1. 统招本科及以上学历(985/211优先),工科、计算机或其他相关专业,1-2年工作经验;

2. 具备基本的编程能力,熟悉掌握一门编程语言(Python,java);

3. 精通功能测试,熟悉自动化测试;

4. 精通测试流程和测试用例设计方法,能主动进行技术钻研;
!!这是一个什么文件?

__收集、分享互联网开发的岗位信息、各岗位所需技能__的一个信息合集

!!我可以做什么?

任意你想做的事情:阅读、编辑修改、分享传播...

!!传播过程中需要注意什么?

尊重内容原创者和文件制作者的劳动成果

!!我觉得这个文件还有很多缺陷

是的,因为这个文件还不完善。所以非常欢迎大家一起来修订这个文件。

!!怎样编辑这个文件?

可以查看这两个链接:
[[编辑示范说明|编辑示范说明]]、[[文档使用指南]]

!!我修订的内容怎样反馈给文件制作者?

联系[[yugongde]],他会组建相关群组



---

本文件是一个基于Tiddlywiki技术的网页文件,你可以点击【保存变更】按钮,保存本文件到你的桌面,就可以将本文件作为你的

!!个人笔记本

来使用,比如记录日记

或者是用来:

!!梳理你的知识体系,或者某个领域的知识体系。

__注意:请在编辑本文件时要注意备份,避免资料遗失。__

当然,我们更欢迎你将梳理好的''知识手册''发给我们,我们会将你发来的知识手册发布到https://xy185.github.io上,当然,知识手册中的内容不应该违反当地的法律法规。

我们致力于帮助大家通过知识手册

*梳理个人知识体系
*与他人分享知识体系
*汇集多样化、多领域知识体系

另外,你可能还需要知道:

[[编辑示范说明|编辑示范说明]]

[[文档使用指南]]

---

建议内容创作者发布内容时,在首页的下方发布内容分享声明,具体第几种可以根据需要复制修改即可。

本文件采用[[内容分享声明|内容分享声明]]中的第一种声明:

[[署名-相同方式分享-维权代理|内容分享声明]]
工作职责



1、系统原型的设计和系统核心开发;

2、参与应用系统对象建模工作;

3、参与或审核应用系统架构设计;

4、参与解决各类疑难技术问题;

5、对开发人员的工作作出指导。



任职资格



1、具备8年以上的IT研发经验,有3年或以上的系统架构设计,包括SOA、微服务等系统架构设计经验;                                                                                        

2、掌握架构设计方法论,并有实践经验;精通UML、JAVA/J2EE、XML、TCP/IP、SQL等技术基础;

3、至少熟悉一种架构发放论及框架,如TOGAF, ITSA, DODAF等;

4、有较强分析、沟通协调能力,善于团队合作;

5、具备框架性、前瞻性思维能力;。从整体和全局把握问题的能力;

6、较强的学习和钻研能力。同时也具备实际动手能力。
后端开发的部门主要任务是实现网站或者APP的功能开发,让功能可用、易用,「程序猿」是最直接的描述。


为了让服务器、应用、数据库能够彼此交互,后端工程师需要具有如下技能:

用于应用构建的服务器端语言: PHP, Ruby, Python, Java, .Net 等;

数据相关工具: MySQL, Oracle, SQL Serve

PHP框架: Zend, Symfony, CakePHP

Java框架:SSH、SSM、SpringCloud等

版本控制工具:SVN, CVS , Git 等

还要熟练使用 Linux 作为开发和部署环境。

	
具体技能图谱如下:

 !!![[Server 后端领域]] 技能图谱

!!!各种[[开发语言领域]]技能图谱

!!后端开发常见岗位

*	[[后台开发工程师]]
*	[[后端架构师]]
*	[[Java开发工程师]]
*	[[PHP开发工程师]]
*	[[C/C++开发工程师]],[[C#开发工程师]],
*	[[Hadoop工程师]]
*	[[Python工程师]]
*	[[Ruby工程师]]
*	[[Node.js工程师]]
*	[[开发经理]]
*	[[开发总监]]
	
	
后端工程师的职责是实现功能开发,让功能可用、易用


工作职责:

1、负责产品组件的需求与设计;

2、负责研发产品的基础架构设计、开发和维护;

3、负责服务器端应用程序开发与维护;

4、根据产品需求完成模块设计,编码和测试工作;

5、能够按时提交高质量的代码,完成开发任务;

6、负责网站网页后台服务设计开发、储存、测试等工作;

7、负责后台等相关文档的编写工作。
!![[技术高级管理岗位]]

!![[前端开发岗位]]

!![[后端开发岗位]] 

!![[移动开发岗位]]

!![[数据岗位]](数据库/大数据/人工智能)

!![[测试岗位]]

!![[运维岗位]]

!![[项目管理岗位]]

!![[信息安全岗位]]




!![[新技术场景岗位]](云、AI、区块链)
!![[机器学习技能图谱]]

岗位职责:

1. 从事基于机器学习/深度学习的航拍/卫星影像自动处理技术的研发;

2. 负责机器学习/深度学习高性能计算系统的构建。



任职要求:

1.  计算机、图像识别、自动化或者模式识别专业硕士/博士学历;

2.  5年以上机器学习/深度学习项目研发经验:计算机视觉相关;

3.  熟练掌握各种机器学习算法(决策树、支持向量机等),熟练掌握主要的深度学习算法(CNN、RBN、DBN等);

4.  能够熟练使用Torch、Caffe、Tensorflow等其中一种主流的深度学习框架;

5.  熟悉OpenCV,精通C/C++,Matlab,熟悉Python编程语言;

6.  熟悉并行算法,做过多核和GPU开发;
!机器学习技能图谱


作者:[[@徐英凯|https://github.com/kevinhsu ]]  闪银机器学习工程师 

[[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-MachineLearning-by-StuQ.png ]]  

主要作者:

@徐英凯|闪银机器学习工程师 

审校顾问:

* @卢誉声,Autodesk 软件研发工程师
* @高扬,欢聚时代资深大数据技术专家
* @罗远飞,第四范式机器学习工程师

!''Toolbox''

!![[C]]/[[C++]]

** Vowpal Wabbit

** MultiBoost

** Shogun

!!Java

** Mahout

** Weka

** Mallet

** JSAT

!!Python

** Scikit-learn

** PyBrain

** nltk

** Theano

** Pylearn2

** MDP

** Orange

** milk

** pyml

** Numpy

!!R

!!Julia

!!Matlab

!''Real-time Computation Paltform''

!!Spark

** MLlib

!!Hurricane

** SewedBlAS

!!Storm

!!Heron




!''Algorithms''

!!''Supervised Learning''

!!Regression

** Generalized Linear Regression

** Gaussian Processes

** Isotonic Regression

!!Classification

** Support Vector Machines (SVM)

** Linear and Quadratic Discriminant Analysis

** Decision Trees

** K Nearest Neighbors

** Naive Bayes

** Neural Networks

** Ensemble Methods

** Kernel Approximation

** Adaboost

!!''Unsupervised Learning''

!!Clustering

** K-Means

** Gaussian Mixture Models

** Spectral Clustering

** Manifold Learning

** Hierarchical Clustering

** Affinity Propagation

** DBSCAN

** Birch

!!Dimensionality Reduction

** Principal Component Analysis

** Linear Discriminant Analysis

** Locally linear embedding

** Laplacian Eigenmaps

** Isomap

** Spectral Embedding

** Feature Agglomeration





!''Reinforcement Learning''

!!Markov Decision Processes

!!Q-Learning

!!Sarsa

!!A-Learning

!!''Deep Learning''

!!Convolutional Neural Network (CNN)

!!Restricted Boltzmann Machines

!!Recurrent Neural Network (RNN)

** Long Short Term Memory




!''Model Selection and Evaluation''

!!Cross-validation

!!Grid Search

!!Model Evaluation

!!Model Persistence

!!Validation Curves



!''Frameworks''

!!TensorFlow

!!Caffe2/Caffe

!!Theano

!!Torch

!!Chainer

!!OpenBLAS

!!CUDA

!!CUDNN
职位描述:

岗位职责:

1. 负责机器学习算法研发,通过优化模型和机制改善用户体验、提升业务效果;

2. 分析用户行为,挖掘用户需求,并将分析结果转化为可行的算法策略并推动落地;

3. 跟踪业界前沿算法,结合业务特点落地和创新,实现技术和业务突破,最大化算法价值

 

任职资格:

1. 机器学习、数据挖掘相关方向硕士及以上学历或三年以上工作经验,对用户画像/推荐系统有经验者优先;

2. 扎实的机器学习功底,熟悉LR、DNN、GBDT等算法原理,保持对领域前沿方向的跟踪,有RecSys、SIGIR、WWW、ICML、NIPS等相关顶级学术会议论文发表者优先

3. 熟悉linux编程环境、至少熟练掌握C++、Java或Python一种编程语言,具有良好的编程习惯和算法基础

4. 熟悉大规模数据挖掘、机器学习等相关技术,熟悉Hadoop/Spark/Hive技术;

5. 热衷于技术创新,善于突破既有框架做出改变,善于运用有限资源针对具体问题拿到结果优先。

6. 良好的沟通表达能力和团队协作能力,自我驱动,热衷技术,追求极致

[ ] 机器学习 - Coursera https://www.coursera.org/learn/machine-learning/home/week/1

!! 网站和索引

* ~TensorFlow 中文社区 http://www.tensorfly.cn
* 更多机器学习资源- ~TensorFlow 中文社区 http://www.tensorfly.cn
* 深度学习入门资源(主要是国外资源) - 萌新的学习日记 - 知乎专栏 https://zhuanlan.zhihu.com/p/29058973
* Awesome Deep Learning https://github.com/ChristosChristofidis/awesome-deep-learning
* 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1) https://github.com/ty4z2008/Qix/blob/master/dl.md
* Charlotte77 | 数学系的数据挖掘民工 - cnblogs http://www.cnblogs.com/charlotte77/

!! 书籍

* Deep Learning 中文翻译 https://github.com/exacity/deeplearningbook-chinese
* Deep Learning - An MIT Press book http://www.deeplearningbook.org
* Neural Networks and Deep Learning http://neuralnetworksanddeeplearning.com

!! 文章

* 如何入门深度学习? https://zhuanlan.zhihu.com/p/21475898
* 人人都可以做深度学习应用:入门篇 https://zhuanlan.zhihu.com/p/25482889
* MNIST机器学习入门 - ~TensorFlow 中文社区 http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html
* 深度学习如何入门?- 知乎回答 
** https://www.zhihu.com/question/26006703/answer/156451408
** https://www.zhihu.com/question/26006703/answer/229415675
* 原来理解 深度学习 这么简单!  www.sohu.com/a/139103528_463994

!! 课程

* 机器学习 - Coursera https://www.coursera.org/learn/machine-learning/home/week/1

!! 框架

* ~TensorFlow
* Caffe
* Torch
* Theano

!! 数学

关联:

* 机器学习应该准备哪些数学预备知识? - 知乎 https://www.zhihu.com/question/36324957
* 机器学习理论篇1:机器学习的数学基础 - DT新纪元 - 知乎专栏 https://zhuanlan.zhihu.com/p/25197792
* 机器学习中的基本数学知识 - steven yang - cnblogs http://www.cnblogs.com/steven-yang/p/6348112.html#微分differential
* [转载]《和机器学习和计算机视觉相关的数学(from LinDahua)》 - 科学网  http://blog.sciencenet.cn/blog-240720-284694.html


学习:

* 张宇高数十八讲【已完结】 - Bilibili https://www.bilibili.com/video/av12790754/
* 高等微積分 - 台大开放式课程

!! 参考

传统机器学习算法:感知机、SVM、LR、Softmax、Kmeans、DBSCAN、决策树(ID3、C4.5、CART)、GBDT、RF、xgboost、Adaboost、EM、BP神经网络、NB、LDA(fisher discrimination)、PCA、核函数、最大熵、logistic regression等等,目前想到这么多,下次博客会讲述我对它们的理解以及我的学习材料资源。

深度学习(DL是ML的一部分,不要认为DL中包含ML,推荐看看bengio老师的DL):CNN、RNN、LSTM、常用激活函数、adam等优化算法、梯度消失原因、梯度爆炸等。

自然语言理解(NPL):TF-IDF、textrank、word2vec等。

常用概念:最大似然估计(这是一个有故事的概念...)、最小二乘、模型融合方法、L1、L2正则、判别模型与生成模型、熵、KL散度、数据归一化、最优化方法(梯度下降、牛顿、共轭梯度等)、无偏估计、算法评估方法(FROC、ROC、PR、F1、AUC等)、交叉验证、bias-variance-trackoff、概率、高数、线代等等。

来源:[[从小白到机器学习算法工程师,我做了哪些准备?|http://blog.ihuxu.com/the-preparation-from-the-white-to-the-machine-learning-algorithm-engineer/]]
 ![[人工智能AI技能图谱]]

 !![[机器学习技能图谱]]

 !![[Apollo自动驾驶技能图谱]]

 ![[大数据技能图谱]]

 !![[Hadoop技能图谱]] 

 ![[Web前端技能图谱]] 

 !![[移动性能优化技能图谱]] 

 !![[HTML5开发技能图谱]] 

 !![[Angular2技能图谱]]

 ![[Server 后端技能图谱]] 

 !![[架构师技能图谱]]

 !![[OpenResty技能图谱]] 

 !![[直播技术技能图谱]]

 !![[CDN技术技能图谱]]

 !![[DNS排查技能图谱]]

 ![[云计算技能图谱]]

 !![[OpenStack技能图谱]] 

 !![[容器Container技能图谱]] 

 !![[微服务MicroService技能图谱]]

 ![[安全技能图谱]]

 ![[智能运维技能图谱]]

 !![[DBA技能图谱]]

 !![[DevOps技能图谱]] 

 !![[Kubernetes技能图谱]] 

 ![[测试技能图谱]]

 !![[移动无线测试技能图谱]] 

 ![[移动开发技能图谱]] 

 !![[iOS 开发技能图谱]]

 !![[AndroidApp 开发技能图谱]] 

 !![[AndroidROM 开发技能图谱]]

 !![[Android 架构师技能图谱]]

 ![[智能硬件技能图谱]]

 !![[嵌入式开发技能图谱]] 

 ![[开发语言技能图谱]]

 !![[Golang技能图谱]]

 !![[Clojure技能图谱]]

 !![[Python技能图谱]]

 !![[Haskell技能图谱]]

 !![[Node.js技能图谱]]

 !![[Ruby技能图谱]]

 !![[Java技能图谱]]

 ![[开发工具技能图谱]] 

 !![[Git技能图谱]]

 ![[技术管理技能图谱]] 

 !![[CTO技能技能图谱]] 
!管理类

  !![[思维导图版-CTO技能技能图谱]]		

!各种开发语言

  !![[思维导图版-开发语言技能图谱]]	

!前端类

  !![[思维导图版-Web前端技能图谱]]	

  !![[思维导图版-HTML5开发技能图谱]]									
							
  !![[思维导图版-Angular2技能图谱]]	

!后端开发、架构
							
  !![[思维导图版-架构师技能图谱]]	
	
  !![[思维导图版-嵌入式开发技能图谱]]	
	
  !![[思维导图版-微服务MicroService技能图谱]]	
							
							
!移动开发

  !![[思维导图版-iOS 开发技能图谱]]		

  !![[思维导图版-Android 架构师技能图谱]]	

  !![[思维导图版-移动性能优化技能图谱]]		

								
							
!运维
							
  !![[思维导图版-智能运维技能图谱]]	

  !![[思维导图版-容器Container技能图谱]]	
	
  !![[思维导图版-Kubernetes技能图谱]]	

  !![[思维导图版-OpenResty技能图谱]]	

!测试

  !![[思维导图版-移动无线测试技能图谱]]		
							
							
!数据、云计算、人工智能

  !![[思维导图版-DBA技能图谱]]		

  !![[思维导图版-Hadoop技能图谱]]		

  !![[思维导图版-大数据技能图谱]]			
							
  !![[思维导图版-云计算技能图谱]]		

  !![[思维导图版-机器学习技能图谱]]		
							

!安全	
							
  !![[思维导图版-安全技能图谱]]			
注:有思维导图版技能图谱,链接是 [[技能图谱-思维导图版合集]]


 ![[人工智能领域]]

机器学习技能图谱

Apollo自动驾驶技能图谱

![[大数据领域]]

 大数据技能图谱

 Hadoop技能图谱

![[Web前端领域]]

 Web前端技能图谱 

 移动性能优化技能图谱 

 HTML5开发技能图谱 

 Angular2技能图谱



 ![[Server 后端领域]] 

 架构师技能图谱

 OpenResty技能图谱 

 直播技术技能图谱

 CDN技术技能图谱

 DNS排查技能图谱

![[云计算领域]]

云计算技能图谱

容器Container技能图谱

微服务MicroService技能图谱

 ![[安全技能图谱]]

![[智能运维领域]]

 智能运维技能图谱

 DBA技能图谱

 DevOps技能图谱 

 Kubernetes技能图谱 

![[测试领域]]

测试技能图谱

 移动无线测试技能图谱 



 ![[移动开发领域]]

 iOS 开发技能图谱

 AndroidApp 开发技能图谱 

 AndroidROM 开发技能图谱

 Android 架构师技能图谱



 ![[智能硬件领域]]

 嵌入式开发技能图谱 

![[开发语言领域]]

 开发语言技能图谱

 Golang技能图谱

 Clojure技能图谱

 Python技能图谱

 Haskell技能图谱

 Node.js技能图谱

 Ruby技能图谱

 Java技能图谱



 ![[开发工具领域]]

 Git技能图谱



 ![[技术管理领域]]

 CTO技能技能图谱 


技术部门的领导者,通常要参与公司业务规划,并制定相应部门工作计划

通常需要既懂技术,又懂业务,还要懂管理和公司战略,除此之外,还应该具备良好的综合素质,例如超出大众平均水平的沟通能力、抗压能力、自我认识、影响力、洞察力、视野、情商等等


 !!![[技术管理领域]]技能图谱

岗位说明和描述

*	[[CTO]]
*	[[CDO]]
*	[[CSO]]
*	[[大数据总经理]]
*	[[AI部门总]]
*	[[研发总经理]]
 *[[CTO技能技能图谱]] 

*[[思维导图版-CTO技能技能图谱]]
每个产品线都有架构师,在技术平台部门也需要技术平台的架构师。

架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。

1、架构分析:从功能性的需求中识别出需要增加的非功能性需求,好满足性能、可扩展、集成、安全、可运维、高可用、易部署、易更新。并且识别非功能型需求后,还要做技术选型、技术架构风险识别、技术实现工作量评估。

2、架构设计与实现:完成非功能性模块的架构设计、接口设计、代码实现,所以,需要的是有代码实现能力还要有架构思维的工程师,而不是画PPT的工程师。

3、业务架构设计与实现:需要对跨系统的接口进行识别、实现、维护,需要对能写成公共代码类库的进行分析、识别、接口设计、实现、变更维护。

4、重构:架构师需要经常做Bug分析、非模板性和公共类库代码检查,以发现代码腐烂程度,以发现还有哪些代码没有做出很好的架构与精心的代码设计。所以,重构是经常性维护发生的,不是攒到某一刻动大手术,甚至推翻重做,那就不叫重构了。
! ''架构师技能图谱 V1.2''
 
! 系统架构能力
	
!! 基本理论
*扩展性设计
*可用性设计
*可靠性设计
*一致性设计
*负载均衡设计
*过载保护设计
*灾难恢复和备份
 
!! 协议设计
*二进制协议
*文本协议
 
!! 接入层架构设计
*DNS 轮询
*动静态分离
*静态化
*反向代理
*LVS
*F5
*CDN 
 
!! 逻辑层架构设计
*连接池
*串行化技术
*影子 Master 架构
*批量写入
*配置中心
*去中心化
*通讯机制
**同步与异步
**MQ
**Cron
**RMI
**RPC
*数据层架构设计
**缓存优化
***高可用
***允许 cache miss
**DAO & ORM
**双主架构
**主从同步
**读写分离

! 架构性能优化

!! 代码级别
*关联代码优化
*Cache 对齐
*分支预测
*Copy on Write
*内联优化

!! 工具优化
*OProfile
*Gprof
*JDK 工具

!! 系统优化
*Cache
*延迟计算
*数据预读
*异步
*轮询与通知
*内存池
*模块化
*并发

! 工程架构能力

!! 开发语言
*站点开发
*服务开发
*脚本处理

!! 设计模式
!! 数据结构与算法
!! 开发工具
!! 调试工具

!! 测试工具
*单元测试
*接口测试
*性能测试
*集成测试
*自动化测试

!! 运维与监控
*监控
**系统监控
**日志监控
**流量监控
**接口监控
**数据库监控
*告警
*日志

!! 应用技术
*硬件知识
**CPU
**MEM
**Disk
**Net
*第三方库
*数据结构与算法
*操作系统
**Linux
*接入层
**Nginx
**Apache
**Lighttpd
**Tomcat
**Node.js
*框架
**SpringMVC
**Dubbo
**Thrift
*缓存
**Redis
**Memcache
*NoSQL
**MongoDB
**HDFS
**Cassandra
*存储
**MySQL
**SQL Server
**Oracle
*中间件
*消息总线

! 架构师软素质
*沟通能力
*解决问题能力
*学习能力
*创新能力
*项目管理能力
*文档论文阅读能力
*总结归纳能力

 *[[Git技能图谱]]
工作职责:

1、组织平台的需求讨论、架构设计、升级维护及研发;

2、完成日常的开发与设计等工作,并进行单元测试与结合测试,确保系统的代码质量;

3、主导技术难题攻关,重构系统,保证高性能处理和系统的稳定性;

4、前瞻性的考虑业务需求、系统现状以及问题,对系统的发展进行规划并推行实施;

5、项目部分策划分析,项目开展后全面对应客户各项需求和沟通、管理客户关系;

6、项目部分计划的制定、组织、推动及落实。

7、建立管理体系,制定管理制度和规范;组织编制、审核各类技术方案、规范和文档,保证技术成果质量;
8、研发团队的日常管理。


任职资格:
1、计算机通信或电子信息等相关专业本科及以上学历,本科及以上,211、985院校优先;

2、3年以上开发经验,专业知识扎实,有丰富的分布式系统架构设计经验,具有技术管理经验优先;

3、熟悉JAVA体系架构,精通主流的开源框架,掌握网络、多线程开发技术、异步通信处理;

4、熟悉服务器优化,集群技术处理、网站负载均衡、系统性能调优等软件编程高级技术;

5、熟悉mysql的基本原理,精通Mysql、Oracle等大型数据库,熟悉常见的NO SQL解决方案;能设计高效高性能数据库,并熟悉语句优化,服务器优化,以及架构选型;

6、熟悉redis,memcache 等缓存中间件,并能根据实际业务需求,选择合适的中间件。熟悉redis memcache 基本原理,以及优劣。并有redis 集群,memcache 集群使用经验;

7、熟悉rocketmq、rabbitmq, kafka等中间件,熟悉其部署以及常规性能优化;

8、精通linux(shell),以及linux 相关服务,对公司服务器资源进行合理规划和管理;

9、熟悉云计算框架的应用模式及开发;有互联网大型分布式系统的架构设计和开发经验的优先。

! 开发语言综述
 
! 范式

!! 声明式
*函数式
**Common Lisp
**Clojure
**Haskell
**Erlang
**Scala
**LISP
**Logo
**F!
*逻辑式
**Prolog

!! 命令式
*非结构化
**COBOL
*结构化
**面向对象
  ***Visual Basic
  ***Objective-C
  ***Smalltalk
  ***Python
  ***Ruby
  ***Eiffel
  ***Java
  ***C++
  ***C#
**过程式
  ***Delphi/Object Pascal
  ***Fortran
  ***BASIC
  ***Pascal
  ***Go
  ***C
**原型
  ***IO

!! 元编程
*泛型/模板
**Eiffel
**C++
**D
*反射化
**ECMAScript
**Python
**Java
**Ruby
**PHP
**Perl
**R

!! 移动
*IOS
  **Swift
  **AppleScript
  **Objective-C
*黑莓
  **JAVA
  **HTML
  **C/C++
  **Adobe Air
*Android
  **JAVA
*windows phone
  **C#
  **VB
  **C++
  **javascript

!! 平台
*.NET框架
  *Visual Basic .NET
  *Visual C#
  *ASP.NET
  *C#
  *F!
  *J!

*Java VM
  **Groovy
  **Clojure
  **JRuby
  **Ceylon
  **Jython
  **Scala
  **Kawa
  **Java

!! 脚本语言
*Lua
*Perl
*JSP
*PHP
*ASP
*Shell
  **sh
  **csh
  **ksh
  **sed
  **awk
  **bash
*Ruby
*Tcl/Tk
*Python
*VBScript
*AppleScript
*ECMAScript派生
  **Dart
  **JScript
  **JavaScript
  **ActionScript
  **CoffeeScript

!! 其他
*Ada
*Forth
*AAuto
*易语言
*ALGOL
*汇编语言
  **x86/amd64汇编指令
   ***Intel汇编
   ***AT&T汇编

!! 专业工具
*标记
  **Curl
  **SGML
   ***XML
   ***SVG
   ***XSLT
   ***SSML
   ***SGML
   ***HTML
   ***XHTML
   ***DHTML
   ***XML Schema
*数据库
**LINQ
**T-SQL
**XQuery
**PL/SQL
**Visual FoxPro
*样式格式描述
**XSL
**CSS
*工业与辅助设计
**AutoCAD
*科学与统计计算
**R
**MATLAB
**FORTRAN
**Mathematica

 *[[开发语言技能图谱]]

 *[[Golang技能图谱]]

 *[[Clojure技能图谱]]

 *[[Python技能图谱]]

 *[[Haskell技能图谱]]

 *[[Node.js技能图谱]]

 *[[Ruby技能图谱]]

 *[[Java技能图谱]]
!!开发总监、技术总监JD



工作职责



1、责搭建公司技术团队、设计团队组织架构,打造技术文化,培养提升团队整体技术能力;

2、参与公司战略制定,根据业务规划制定技术路线,搭建设计符合业务需求的技术架构,并负责技术架构的落地和实施;

3、监督及指导技术工作,建立并完善各项研发规范及流程;

4、负责组织核心系统技术研究和攻关工作,建立信息安全的技术及管理方案。



任职资格



1、统招211、985院校本科及以上学历,计算机相关专业背景;

2、10年以上IT工作经验,3年以上知名互联网、IT公司CTO/技术总监经历,100人以上技术团队的管理经验;

3、有很强的团队管理和协调能力,有较强的沟通、理解、思考能力;

4、精通java服务端架构,熟悉主流服务器技术,有高可用的大型分布式系统架构设计、开发、维护经验;

5、了解主流的移动APP和前端技术框架,了解大数据、区块链、人工智能等前沿技术;

6、对IT解决方案架构和软件开发有丰富经验的优先考虑。
<div class="tc-table-of-contents">

<<toc-selective-expandable '目录'>>

</div>
!关于内容分享声明

我们基于“''内容希望被共享''”的理念,创建了伯乐手册,从而鼓励内容被更多的分享传播。

在鼓励分享内容的同时,我们也希望内容创作者的权利得到保护。


因此,我们参考[[CC知识共享协议|http://creativecommons.net.cn/]]提出内容共享声明,并提倡内容分享者在发布内容时,选择三种声明中的任意一种,从而保护自己的权利。



!第一种声明:

署名-相同方式分享-维权代理

!第二种声明:

禁止商用-署名-相同方式分享-维权代理

!第三种声明

禁止商用-禁止演绎-署名-相同方式分享-维权代理


!关于上述声明中五项条件的说明:

!!署名
*其他任何人在使用用户所分享的内容时,必须提到原作者

!!禁止商用

*不得用于盈利性目的

!!禁止演绎

*不得修改原作品, 不得再创作

!!相同方式分享

*在分享内容时,必须使用和原作相同的内容分享声明,且该声明的内容必须在作品中显著位置展示。

!!维权代理

*如果在使用包含了[[内容分享声明|http://www.bolebook.com/#ContentShareStatements]]的内容时,违反了内容分享声明,则内容创作者将委托律师或其他维权组织作为维权代理。


!对内容分享声明的解释:

内容分享声明,是内容创作者(包含原创者、再创作者)在发布内容时同步发布的声明。

声明的目的在于鼓励内容更多的被分享,同时要求内容使用者尊重内容创作者的权利。

!!补充条款(仅适用于伯乐手册上分享的内容):


*一、''如果内容创作者没有主动声明'',则__''默认采用第一种声明。''__

*二、如果内容创作者没有事先指定,即默认[[伯乐手册|http://www.bolebook.com]]作为维权代理。当然,内容创作者可以根据自己的要求更换维权代理

以上协议的正式法律文本未来将会补充完整。







请点击控制台,然后在信息 那一栏下面修改文件名、作者名等信息。

我们不建议修改其他内容

当然了,如果你希望修改也可以,毕竟下载到你的桌面的文件都属于你。

工作职责:

通过前端工程化技术建立公司与用户、生态连接的桥梁,通过前端精细化技术为用户带去高效、极致的产品体验。

工作范围覆盖云平台的产品控制台、APP、开发者生态集成等领域。

任职要求:

3年以上Web开发经验 ,丰富的前端通用基础技能应用经验(HTML/JavaScript/CSS) ;

熟练或精通Web图形图像及动效的处理 ,有丰富的移动端Hybrid开发经验 ;

熟练或精通一种编程语言(如:Node.JS/Java/PHP),熟练或精通关系型或非关系型数据库操作 ;

项目开发构建工具能够自给自足或熟练使用业界流行工具 ;

熟练使用 Github/Gitlab 进行项目代码管理 ;

逻辑思维缜密,喜好算法研究,或有大型运算处理经验者优先考虑 ;

7)对流行前沿人机交互技术实现具有敏锐的触觉,有实践经验者优先考虑;

8)对云计算或云计算产品有认知有实践经验者优先;
职位描述:

岗位内容:

1、负责公司前端系统的设计和开发,完成项目的前端架构设计,并带领团队完成具体业务落地;

2、持续改进公司前端工程化体系,推动前端的自动化、工具化;

3、构建统一的企业级前端运行态框架和组件库;

4、优秀的技术敏锐性,紧跟技术发展,并将成果应用于组织;

5、营造良好的前端技术氛围,领导并促进团队成长;

6、负责解决前端开发流程中的各种痛点,带领技术攻关。

职位要求:

1、本科及以上学历,五年以上前端研发经验,有团队管理经验;

2、精通各种Web前端技术,熟悉面向对象,函数式编程等常见技术开发模式;

3、有前端架构设计、性能优化、组件化和模块化方面的实践经验,有系统重构的能力; 

4、对前端MV*框架有深刻理解,至少有一个现代库或框架的大型项目经验(如:Angular、React、Vue);

5、熟悉前端工程化工具,如Webpack;

6、热衷学习与分享,喜欢阅读技术文档和书籍。

工作地址
前端开发的主要工作职责就是开发前端页面,也就是普通用户可见的页面部分,其中包括页面元素的实现、页面的结构布局、页面的动态效果、数据的传输等。

当然,更深入的还有框架的优化,页面性能的优化等。


!!![[Web前端领域]]技能图谱

!!前端类常见岗位

*	[[Web前端开发]]	
*	[[前端开发工程师]]
*	[[前端架构师]]
*	[[H5开发]],以及[[H5游戏开发工程师]]
*	[[U3D]]
*	[[前端开发Leader]]
	
工作职责:

1、熟练使用DIV+CSS并结合JS负责产品的前端开发和页面制作;
2、熟悉W3C标准和各主流浏览器在前端开发中的差异,能运用DIV+CSS解决浏览器的兼容性;
3、负责相关产品的需求以及前端程序的实现,提供合理的前端架构;
4、与产品、后台开发人员保持良好沟通,能快速理解、消化各方需求,并落实为具体的开发工作;
5、了解服务器端的相关工作,在交互体验、产品设计等方面有自己的见解。
!![[移动性能优化技能图谱]] 



职位职责: 

1、负责搭建和管理前端团队; 

2、对团队产出的质量和效率负责; 

3、团队负责公司效率工具相关的前端架构设计和研发工作并做好团队攻坚,主要的产品形式有 Web 系统、客户端小程序、H5 应用等,涵盖多个职能部门; 

4、和产品配合,深度参与产品需求讨论,功能定义等; 

5、过往工作中主要使用到的技术栈是 ES2015/TypeScript、React、小程序等。 

职位要求: 

1、计算机科学或相关技术专业本科及以上(或具备同等水平的实践经验),3年以上技术工作经验,1年及以上团队管理经验; 

2、掌握当前比较流行的前端的开发技术:ES2015、React、主流小程序框架等等; 

3、较好的产品意识,愿意将产品效果做为工作最重要的驱动因素; 

4、积极乐观,认真负责,乐于协作
! 嵌入式工程师

!! 硬件核心(Hardware Core)
 
!!! Controller(控制器)
*CPU
  **AMD x86 x64
  **Intel x86 x64
*MCU
  **MCS-51
  **HCS12
  **AVR XMEGA
  **ESP
  **Coldfire
  **ARM
  **STM32
  **FreeScale K60 K40
  **PIC32 PIC12/14/16
  **TM4C123 TM4C129X
  **Stellaris lm4f120
  **CC3200
  **Renesas R-Car Boards
  **MIPS Creator CI20
*MPU
*SOC
  **OMAP
  **BCM2835(Raspberry Pi A+、B、B+)
  **BCM2836(Raspberry Pi 2B)
*CPLD
  **Altera EPM7128S
  **Lattice LC4128V
  **Xilinx XC9500
*FPGA
  **Altera Cyclone
  **Lattice MachXO2 MachXO3  
*PowerPC
  **MPC505、821、850、860、8240、8245
  **QUICC ⅡMPC826
  **QUICC Ⅲ MPC8560
*DSC
  **TMS320F28x
  **MC56 F83x
*MIPS

!!! Actuator(执行器)
*直流电机
  **有刷直流电机
  **无刷直流电机
*交流电机
  **单相电机
  **三相电机
*步进电机
*直线电机
*舵机
*伺服电机

!!! Sensor(传感器)
*RIP(人体红外)
*Temperature(温度)
*humidity sensor(湿度传感器)
*geomagnetic sensor(地磁传感器) 
*acceleration transducer(加速度传感器)
*optoelectronic switch (光电开关)
*pneumatic sensor (气流传感器)
*current sensor (电流传感器)
*soil sensor (土壤传感器)
*llumination sensor (光照传感器)
*laser sensor (激光传感器)
*Motion(运动)
*Moisture sensor (土壤温度传感器)
*电压传感器
*three-axis gyroscope(三轴陀螺仪)
*Camera 感光元件(图像传感器)
*baroceptor(气压传感器)
*gas sensor(气敏传感器)
*Dust concentration sensor(粉尘浓度传感器)PM2.5
*Water level sensor(水位传感器)
*Pulse sensor(脉搏传感器)
*EEG sensor(脑皮质电位传感器)
*Flex Sensor (弯曲传感器)
*proximity sensor (近距离传感器)
*Atmospheric Pressure Sensor (气压传感器)

!! Electronic Component(电子元件)
*电容
*保护装置
*端子与连接器
*电线
*开关
**Switch
**Keypad
**Relay
*电阻
**Thermistor (热敏电阻)
**Varistor(压敏电阻)
**Photosensitive resistance(光敏电阻)
*电磁感应装置
*network
**电阻排
*忆阻器
*压电装置、晶体谐振器
*电源
*二极管
*晶体管

!! MCU/CPU/DSP/SOC peripherals
*ADC / DAC
*RTC
*Timer / Watchdog Timer (定时器)
*Flash / NAND Flash
*ROM / EEPROM
*RAM
**SDRAM
**DDR1 DDR2 DDR3 DDR4
*Cache
*PWM
*I/O / GPIO
*UART
*Modem
*DTMF
*CAN
*SPI
*I2C
*IEEE
*CRC
*Interrupt (中断)

!! Communication(通信)
*硬件间无线通信
**Bluetooth
**Xbee / Zigbee
**Z-Wave
**6LoWPAN
**NFC
**Wifi
**Radio
**IR (红外)
**802.11
**Sub-GHZ 1Ghz以下RF
*硬件通信
**UART
**I2C
**RS232C/RS485
**HDLC
**SPI/SCI/SI
**CAN
**USB
**FireWire
**1-wire
*网络协议
**HTTP
**CoAP
**MQTT
**XMPP
**WebSocket
**UDP
**TCP

!! 软件编程
*Common
**ISR
**Driver
**DMA
**I2C
*OS
**uCOS
**Contiki
**TinyOS
**VXWorks
**FreeRTOS
**mbed OS
**emOS
**Salvo
**MQX
**RIOT
**rt-thread
**Linux
  ***uCLinux
  ***openWRT
**Windows
  ***Windows CE
  ***Windows 10 IoT Core
*non-OS
**LwIP

!! 电路
*基础
**焊电路
**模拟电路
**数字电路
*PCB设计
**设计工具
***Eagle
***Cadence
***Protel
***Altium
***Mentor
***Kicad
***gEAD
***ZUKEN
***PADS
***FreePCB
***Fritzing
***PCBmodE
**布线/布线
*电路仿真
**原理仿真软件
***Multisim
***Proteus
***Pspice
**信号仿真软件
***ADS
***HFSS
***HyperLynx
***Sigrity
***MATLAB








!!区块链架构师职位描述1:

职位描述:


1.能够独立进行区块链底层系统及应用平台的功能定义和架构设计,研究区块链的协议,运行机制、底层实现和应用平台研发等;

2.从事区块链产品的设计和研发工作,研究区块链的协议,运行机制和底层实现等;

3.指导项目团队成员的日常开发工作,解决开发中的技术问题,推进团队伙伴完成项目落地。

4.持续关注区块链相关前沿技术研究,保持公司的市场优势;

任职要求:

1.本科以上学历,3年以上互联网架构设计和研发经验,计算机相关专业优先;

2. 熟练掌握GoLang,C++等主流区块链系统开发语言;

3、掌握区块链技术的设计理论,掌握Bitcoin,Ethereum,HyperLedger Fabric的区块链相关机制与原理;

4、深入理解常用区块链共识算法运作原理和优劣,包括POW,POS,DPOS,PBFT, VRF;

5、熟练使用 Merkel Tree, Hash计算,Grossip, 随机算法 ; 端到端加密,对称和非对称加密算法,X25519,Ed25519算法;

6、熟练掌握签名,多重签名,环或群签名,CA证书认证,PKI证书技术;

7、精通PBFT 共识算法的开发和优化者优先;

!!区块链架构师职位描述2:

岗位职责: 

1.负责基于区块链(Blockchain)的产品的设计和研发; 

2.研究区块链的协议,运行机制和底层实现等; 

3.开发基于区块链的服务产品,包括后端协议、基础架构、系统服务及其相关客户端。 



岗位要求:

1.本科以上学历,5年以上互联网架构设计和研发经验;

2.熟悉 Java、Golang、C++ 任意一种或多种开发语言;

3.熟悉各种数据结构和算法,对密码学,安全协议和加密算法有研究;

4.熟悉并掌握区块链底层技术:P2P网络、加密技术、共识算法等;

5.对区块链产品有深入了解,精通至少一种Hyperledger、以太坊、比特币等开源项目;

6.具备金融行业背景者,或有实际区块链项目经验者优先;
【岗位职责】



1. 设计和开发高效稳定的区块链网关层,承接java和golang团队。

2. 完成单元测试,保证良好的测试通过率,对路由和性能做必要的优化。 

3. 根据软件工程要求,编写接口文档,为软件测试、系统对接与项目维护提供保障

4. 配合其他开发小组的完成部门内联调以及保障测试小组的系统测试的顺利进行。

5. 负责区块链网关定期的技术更新,保持与最新区块链底层框架的同步。

6. 为区块链部门提供简单易用的区块链网络辅助工具,提高整体工作效率。



【任职要求】

 

1. 熟悉计算机组成原理,操作系统,数据结构,网络,基本算法等基础知识。

2. 熟悉Java/Go/Node中的一种语言,有一些简单的项目经验。

3. 熟悉一种或者几种常见数据库:mysql,SQLserver,Oracle,DB2等。

4. 熟悉基本的面向对象编程思想,MVC,SOA等设计思想。

5. 熟悉一种或几种常见的框架,SSH/SSM/express/koa/beego/dubbo/springboot/springcloud等。

6. 熟悉linux基本命令和基本操作。

7. 初步了解区块链基本概念。

8. 能够独立完成下分的开发任务并编写单元测试代码。

!!区块链平台开发岗位描述1:

职位描述:
- 设计面向企业的区块链服务技术平台架构,设计面向行业的区块链业务解决方案,提供公共云和私有云环境区块链平台及服务

- 研究并攻克区块链平台及服务的关键技术挑战, 探索和推进区块链技术在不同场景下的应用

- 带领研发团队进行区块链企业SaaS应用的需求定义、场景和架构设计、开发测试、应用输出

- 与百度内部技术团队合作,完成百度内部区块链基础设施的技术融合、产品化工作

岗位要求:

- 熟悉业界主流区块链技术框架与技术实现(Hyperledger Fabric/Ethereum/EOS/R3 Corda),对区块链开源技术做出代码贡献者优先

- 丰富的应用开发技术,精通Golang/Node.js/Java/Python等一种开发语言,对密码学、安全协议和加密算法有研究经验者优先

- 负责区块链应用系统的设计、开发、集成等工作,有分布式系统研发经验者优先

- 很强的技术敏感性和学习能力,有全栈开发能力者优先

- 较强的团队沟通和协作能力,较强的工程化思维,较强的自我驱动能力

!!区块链平台开发岗位描述2:

职位描述

1. 负责区块链云平台框架、监控、通用服务等基础设施的设计开发;

2. 负责区块链云平台基础服务组件的设计开发;

3. 参与区块链业务后端开发,根据产品需求进行系统分析、架构设计及业务功能的开发和维护。

职位要求

1、掌握WEB后端开发技术: 协议、架构、存储、缓存、安全等;

2、熟练掌握Linux环境下的Java/Go/Python/Node.js等1至2种以上语言 ;

3、了解微服务架构的技术及对应的解决方案 ;

4、扎实的技术基础,熟悉性能、可用性、伸缩性、扩展性、安全性、运维监控、集成发布等 ;

5、熟悉业务架构设计理论,熟悉行业常见的架构方案 ;

6、思路清晰,具备生产系统快速 trouble-shooting 的经验和能力。

7、熟悉掌握区块链技术优先


 *[[机器学习技能图谱]]

 *[[Apollo自动驾驶技能图谱]]
! 容器技能图谱

!! 容器核心
*Moby
*LXC
*RunC
*Rkt
*Systemd-nspawn
*Hyper/RunV
*Garden
*Vagga

!! 编排和调度
*Compose
*Yarn
*Marathon
*Kubernetes
*Fleet
*Nomad
*Nebula
*Crane

!! 容器PaaS
*Openshift
*Rancher
*Mesosphere DC/OS
*Dokku
*Flynn
*Tsuru
*Deis Workflow
*Nanobox

!! 容器监控和日志
*cAdvisor
*Docker-Alertd
*Grafana
*Fluentd
*ElasticStack
*Splunk
*InfluxDB
*Prometheus
*Meros
*Sysdig

!! 服务注册和发现
*SkyDNS
*Traefik
*Muguet
*Registrator
*Etcd
*Consul

!! 管理界面
*Portainer
*Shipyard
*Seagull
*Rapid Dashboard
*docker-swarm-visualizer
*Kitematic
*DockStation
*Dockeron

!! 容器网络
*Libnetwork
*CNI
*OVS
*Pipeworks
*Flannel
*Weave
*Calico
*Romana
*Canal

!! 基础设施集成
*Mesos
*Magnum
*Machine
*Boot2Docker

!! 操作系统发行版
*Container Linux
*Project Atomic
*RancherOS
*ClearLinux
*CargoOS

!! 容器安全
*Notary
*Clair
*Twistlock
*AppArmor
*SELinux
*OpenSCAP

!! 数据持久化
*Flocker
*Convoy
*REX-Ray
*Blockbridge
*Netshare
*NetApp
*OpenStorage

!! 容器仓库
*Registry
*Harbor
*docker-registry-ui
*Portus
*Sonatype Nexus


职位描述:


负责语音识别, 图像检测, 图像识别, 推荐,知识图谱的相关算法的研发和优化

  2. 负责深度学习相关算法的调研, 研发. 

''岗位要求'':

  1. 语音, 计算机视觉, 自然语言处理, 数学, 机器学习等相关专业的硕士及以上学历. 

  2. 熟练掌握 C++ 或 python .具有较强的算法实现能力

  3. 具有丰富的深度学习模型训练经验, 熟悉一种以上的深度学习框架, 有独自实现深度学习训练算法的优先. 

  4. 对常用的深度学习算法有较为深入的了解. 

  5. 发表过相关领域的高质量论文者优先 (如 NIPS , CVPR, ICASSP, IJCAI 等 )
工作职责:

对游戏各模块进行性能优化;

对物理寻路系统做优化开发;

支持美术开发图像渲染效果;

对游戏制作中需要的编辑器等游戏引擎工具进行开发。

任职要求:

3年以上相关工作经验,上线游戏开发经验, 有MMO大型游戏和大地
图的开发经验优先;

熟悉各种光照模型和图形学算法;熟悉UE4或者Unity的渲染pipline,熟悉shader编程,熟悉次世代渲染技术;

扎实的数学和算法基础,能快速学习新技术;

熟悉Navmesh和物理系统优先;

深刻理解客户端框架和其他核心模块的实现,有主导过核心模块的开发经验者优先;

熟悉移动端GPU/CPU架构,有移动端渲染开发经验者优先。

责任心强,善于沟通,对游戏前沿技术应用抱有热情。
职位描述:

1. 计算机安全管理团队建设

2. 负责全公司计算机网络安全体系建设,制定公司整体安全策略与方
案;

3. 制定软件开发安全架构与规范并建立完善的安全审查制度;

4. 突发网络安全事件的应急处理;

5. 负责设计网站安全防护体系;

6. 负责网络和服务器定期安全漏洞扫描分析和入侵检测;

7. 负责网站数据和信息安全保密等预防措施和相关监控;

8. 协同互联网安全网站以及白帽安全团队跟踪**安全漏洞以及应对措施。

任职资格: 

1. 计算机或相关专业本科或以上学历,5年以上网络安全领域工作经验,有防入侵攻击等实战经验;

2. 精通网络安全技术:包括漏洞扫描、程序漏洞分析检测、入侵和攻击分析追踪、网站渗透等;能熟练使用相关工具分析网络问题;

3. 精通DOS/CC攻击类型和原理, 具有DDOS/CC攻防经验,能够迅速定位攻击来源以及攻击方式,确定防攻击的措施和相关策略的能力;

4. 精通计算机反病毒原理以及相关工具;

5. 精通路由器、(正反向)代理服务器、web服务器、数据库服务器等原理以及安全设置方法,掌握各类服务器日志格式并有能力从中诊断安全信息;

6. 精通Windows、Linux等操作系统,精通shell、python等自动化脚
本语言;

7. 熟悉常见扫描工具的使用,能够发现网络中或者系统存在的缺陷,并提出补救 措施;

8. 5年以上互联网安全技术团队建设与管理经验,有较强沟通以及抗压能力;

9. 熟知互联网安全网站以及白帽安全团队并具备较好的人脉关系。
欢迎打开本文件

!!本文件目前包含内容有:

|内容一:|互联网''__开发岗位体系__''梳理|
|内容二:|[[招聘中的开发岗位列表|招聘岗位列表]]链接|
|内容三:|开发相关岗位的''__技能图谱__''|
|内容四:|[[算法课程推荐]]|


---

!!岗位体系看-->[[互联网开发类岗位]]

开发相关岗位体系通常这样设置:

* 管理岗
* 开发岗
** 前端开发
** 后端开发
** 移动开发
*** 安卓开发
*** iOS开发
** 架构
*** 基础架构
*** 应用架构
*** 数据架构
*** 安全架构
* 运维
* 测试
* 数据
** 数据库
** 大数据
** 人工智能
** 云计算
* 安全
* 项目管理

!!戳→_→看[[招聘岗位列表]]



与上述岗位体系对应的是:

!![[程序员技能图谱说明]]

内容包括:

 
* [[技术管理领域]]
* [[Web前端领域]]
* [[移动开发领域]]
* [[Server 后端领域]] 
* [[安全技能图谱]]
* [[智能运维领域]]
* [[测试领域]]

* [[大数据领域]]
* [[人工智能领域]]
* [[开发语言领域]]
* [[开发工具领域]]
* [[智能硬件领域]]


接下来会增加的内容:

* 产品
* 设计
* 运营
* 支持部门
** 财务
** 人力资源
** 法务
** 行政
** 客服
* 对外联络部门
** 市场
** 商务
** 品牌/公关
** 政府事务



欢迎大家分享、传播这个文件,更欢迎大家反馈您的修改意见给[[我们|yugongde]],非常感谢!

---


!!!''我们还做了什么'':

一个[[猎头手册|https://xy185.github.io/HRM/hunter20181225.html]]:
https://xy185.github.io/HRM/hunter20181225.html

一个[[AI手册|https://xy185.github.io/tech/AI/AItimes20190122.html]]:https://xy185.github.io/tech/AI/AItimes20190122.html

一个[[区块链手册|https://xy185.github.io/tech/blockchain/blockchainguidebook20181215.html]]:https://xy185.github.io/tech/blockchain/blockchainguidebook20181215.html


欢迎来[[聊天|yugongde]]~

[img[yugongde.jpeg]]



---

本文件地址:https://xy185.github.io

关于本文件内技能图谱部分的协议:遵循 [[CC-BY-NC-SA 4.0|https://creativecommons.org/licenses/by-nc-sa/4.0/]] 协议,如果商业转载必须征求极客邦科技 Geekbang 授权同意,转载请务必注明[[出处|http://www.stuq.org/subject/skill-map/]]。 

---

本文件采用[[内容分享声明|内容分享声明]]中的第一种声明:

[[署名-相同方式分享-维权代理|内容分享声明]]

人类热衷于从过往的历史记录中寻找规律。

当数据大量积累,规律自然涌现。

典型的案例是沃尔玛的啤酒尿布案例和Google的流感预测案例。

因此大型企业们,以及随着互联网技术发展而发展起来的创新型公司都很重视数据的收集和利用。

数据类的岗位通常围绕这几个方面设立:

数据的收集、存储、分析和利用

数据存储的基础是:[[数据库]]

数据类岗位包括:



*	数据架构师Data architect

对Hadoop解决方案的整个生命周期进行引导,包括需求分析,平台选择,技术架构设计,应用设计和开发,测试和部署。深入掌握如何编写MapReduce的作业及作业流的管理完成对数据的计算,并能够使用Hadoop提供的通用算法, 熟练掌握Hadoop整个生态系统的组件如: Yarn,HBase、Hive、Pig等重要组件,能够实现对平台监控、辅助运维系统的开发。

*	大数据工程师Big DataEngineer

收集和处理大规模的原始数据(包括脚本编写,网页获取,调用APIs,编写SQL查询等);将非结构化数据处理成适合分析的一种形式,然后进行分析;根据所需要的和专案分析商业决策。

*	数据仓库管理员Data warehousemanager:

指定并实施信息管理策略;协调和管理的信息管理解决方案;多个项目的范围,计划和优先顺序安排;管理仓库的各个方面,比如数据外包,移动,质量,设计和实施。

*	数据库管理员Database manager

提高数据库工具和服务的有效性;确保所有的数据符合法律规定;确保信息得到保护和备份;做定期报告;监控数据库性能;改善使用的技术;建立新的数据库;检测数据录入程序;故障排除。


*	数据库开发员Databasedeveloper

设计,开发和实施基于客户需求的数据库系统;优化数据库系统的性能效率;准备设计规范和功能单证的分配数据库的项目;对数据库系统进行空间管理和容量规划;建立数据库表和字典;参与数据库设计和架构,以支持应用程序开发项目;执行数据备份和档案上定期;测试数据库,并进行错误修正;及时解决数据库相关的问题;制定安全程序,以保护数据库免受未经授权的使用;评估现有的数据库,并提出改进建议的执行效率;开发用于数据库设计和开发活动的最佳实践。

*	商业智能分析员Businessintelligence analyst

就工具,报告或者元数据增强来进行传播信息;进行或协调测试,以确保情报的定义与需求相一致;使用商业智能工具来识别或监测现有和潜在的客户;综合目前的商业只能和趋势数据,来支持采取行动的建议;维护或更新的商业智能工具,数据库,仪表板,系统或方法;及时的管理用户流量的商业情报。

*	数据分析师Data analyst

指熟悉相关业务,熟练搭建数据分析框架,掌握和使用相关的分析常用工具和基本的分析方法,进行数据搜集、整理、分析,针对数据分析结论给管理销售运营提供指导意义的分析意见。


	
!!![[大数据领域]]技能图谱

!!数据类常见岗位

*	[[MySQL]]
*	[[Oracle]]
*	[[MongoDB]]
*	[[Hadoop]]及对应技能图谱: [[Hadoop技能图谱]] 

*	[[DB2]]
*	[[数据总监]]
	
*	[[大数据开发工程师]]
*	[[数据挖掘工程师]]
*	[[数据科学家]]
*	[[数据架构师]]
*	[[音视频算法工程师]]
*	[[图像处理算法工程师]]
*	[[推荐算法工程师]]
*	[[搜索算法工程师]]
*	[[数据挖掘算法工程师]]
*	[[深度学习工程师]]/[[机器学习工程师]]
*	[[语音识别工程师]]
*       [[NLP算法工程师]]
*	[[大数据开发经理]]
*	[[大数据开发总监]]
	
!!大数据架构师岗位描述1

职位职责: 

1、基于每日百亿级展现数据,搭建大数据处理平台; 实现流式事件的实时计算,落地储存。对于离线数据完成数据仓库的建立,为数据挖掘提供有效的数据; 

2、面向超大规模数据问题,每天处理千亿增量的用户行为和模型预估数据; 

3、负责流式数据的ETL,统计报表及展示; 

4、数据分析,基于数据驱动产品及算法优化。 

职位要求: 

1、有至少TB以上级大数据处理经验,编码能力强悍,具备生产系统快速 trouble-shooting 的经验和能力; 

2、熟悉C++、JAVA、python中的一种或多种编程技术,编程能力强,熟悉大数据处理技术,善于学习应用业界领先数据架构和技术; 

3、对大数据开源组件有使用经验,对hadoop/hive/spark/ES/druid 其中一项精通; 

4、善于学习,思维活跃,善于从数据中发现、思考并解决问题。


!!大数据架构师岗位描述2

工作职责:

1. 负责大数据算法平台的技术选型,系统架构设计,代码开发,以及产品化。

2. 负责大数据算法平台的技术把关,性能调优,控制架构质量,解决项目技术难题;对研发项目和任务需求进行评估和方案设计、拆分任务并指导工程师完成开发;

3. 带领大数据技术团队提供并实现大数据算法平台上各项数据接入、数据挖掘分析及数据可视化的架构设计与能力,支持解决方案实施。 

4. 协调解决开发中的技术问题,设计和监控运营指标,保障系统稳定运行。

5. 协助算法工程师在大数据算法平台开发新的人工智能和机器学习算法。

6. 指导工程师进行技术验证实现,核心技术攻关,解决开发过程中技术难题。

7. 研究大数据和算法前沿技术,对大数据算法平台迭代式进行分析及优化,不断提升算法平台的架构、性能、数据处理,以及其上的算法开发的能力。 

任职要求:

1. 5年及以上大数据架构设计和开发经验;硕士及以上学历,在大型互联网企业从事大数据架构设计者优先考虑;

2. 最近的工作内容必须包括写代码

3. 熟悉整个大数据的完整处理流程,包括数据的采集、清洗、预处理、存储、分析挖据、机器学习和数据可视化;

4. 对大数据基础架构和平台有深刻理解,对基于Hadoop的大数据体系有深入认识,熟悉Hadoop相关各种开源项目,掌握Hive、Spark、Streaming、Storm、Kafka、NiFi等数据处理核心组件;对HDFS、M/R、Yarn的原理有深入了解,掌握系统优化、资源分配与权限控制。

5. 了解 数据湖Kylo和Lambda架构。

6. 具有分布式计算或海量数据应用经验者优先。

7. 熟悉Java/Python/Scala等一种或多种语言,熟悉Redis/MySQL,熟悉Linux平台。


!!数据仓库架构师

工作内容:

1. 负责数据平台架构和规划;

2. 基于数据驱动构建企业的数据模型EDW以及面向应用产品与分析的应用层模型设计开发;

3. 参与数据平台的数据研发,发掘数据商业价值,打造极致体验的数据平台。

任职要求:

1. 从事数据仓库领域至少2年以上,熟悉数据仓库模型设计与ETL开发经验,掌握Kimball的维度建模设计方法,具备海量数据加工处理(ETL)相关经验;

2. 具有一定数据模型和数据架构基础,熟悉hadoop/hive和常用数据库,有数据治理的意识和经验;

3. 精通SQL,有一定的SQL性能调优经验,熟悉hive sql或spark sql的开发;

4. 具有良好的需求分析、系统分析与设计能力,熟悉证券金融相关领域业务优先;

5. 对数据敏感、对技术保持好奇心;
!!第一份职位描述

职位描述:
任职要求:

1、优秀的沟通能力

2、国内外顶级大学获得相关学位(计算机,金融,经济,数学,统计,物理,等)并取得优异的学习成绩

3、在业内领先企业中有3年以上数据分析相关的工作经验

4、善于分析的思考方式并善于创造性地解决问题

5、熟悉Java/Python等编程语言及常用数据结构,具备良好的编程功底

6、熟悉大规模数据处理的常用方法,熟悉Hadoop/spark/storm等至少一种分布式系统

7、熟悉机器学习领域常用算法和工具,有良好的建模思维



岗位职责:

1、发掘和定义大数据在电商业务中的关键应用场景

2、将科学和数据上的洞察转化为产品策略和业务决策


!!第二份职位描述:

岗位职责:

1、深入挖掘和分析业务数据,利用统计和机器学习方法对海量数据进行分析;

2、建立和测试大数据风控模型,并协助完成模型优化和机器学习算法更新;

3、研究机器学习算法在不同风控场景下的应用,开发具有原创性的算法

4、配合项目计划,负责驻场建模项目,完成客户需求的任务;

5、参与数据产品与应用的数据研发,发掘数据商业价值,研发新的的数据产品,为客户提高用户增长和风险管理效率和能力;

6、与其他部门密切沟通,提升为客户技术赋能的价值。

职位要求:

1、计算机、数学、统计或其他理工科相关专业研究生及以上学历,特别优秀者可以放宽要求;

2、深入理解逻辑回归、神经网络、决策树、聚类等常用的机器学习算法的原理,并能熟练应用R或python等软件实现相应算法;

4、有数据挖掘和大型数据处理的经验,了解MapReduce分布式计算,需要一定的SQL能力;

5、有信贷产品相关风控,策略,分析,建模从业经验者优先;

6、能无障碍阅读英文专业文献,有相关领域论文发表者,有Github、Kaggle账号或个人网站者优先;

7、有优秀的逻辑思维能力,高度的业务敏感性与数据敏感性,耐性好,有优秀的学习力并善于发现且能快速解决问题;

8、对探索新技术有浓厚兴趣,出色的团队协作能力,可以适应短期出差者更优。

!!第三份职位描述

工作职责



1、作为技术带头人,带领数据科学团队进行大数据挖掘与建模项目研发;

2、基于海量数据,应用先进的统计建模、数据挖掘、机器学习等方法建立保险领域大数据模型,持续优化核心算法和代码实现,并推进大数据平台升级迭代;

3、开拓前沿的挖掘分析与建模技术,落实数据产品的策略分析与设计规划;结合保险应用场景,探索业务创新模式;

4、对接沟通业务系统研发团队和各业务部门,提供数据驱动方面的专业咨询方案,并对业务的大数据应用场景提出建设性意见;

5、负责大数据挖掘与建模专家团队建设,包括招聘、定级评定、人才培养等,通过专业化手段,统筹管理外派和业务部门内化的建模和数据挖掘队伍;"



任职资格



1、海外优秀院校毕业(TOP50),博士及以上学历,计算机科学、应用数学、统计学或相关专业;

2、5年以上相关经验,具备卓越的职业素养,热衷技术创新;

3、大数据挖掘、建模及应用领域领军性人才,前沿技术视野开阔;

4、有显著的科研或工作成果,曾发表权威性论文,主导或参与过市场影响力较高的数据项目研发;

5、具备较强的沟通和资源整合能力,在大数据领域有广泛的人脉关系;

6、有海外知名企业,或行业领先公司任职经历的优先考虑。
''什么是数据库?''


数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,

每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

''[[MySQL]]简介 ''

是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

''[[Redis]] 简介''

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

''[[oracle]]简介''

Oracle是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

''[[MongoDB]]简介'' 

是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。


''[[Redis]]简介''

是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

'' [[SQLite]]简介''

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。

就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

工作职责



1 基于公司既有数据,进行数据清洗,抽取,分析,信息关联,建立数据挖掘模型。

2 支持包括用户欺诈预测,反渗透模型建立等具体业务

3 面向业务部门进行模型解读

4 对业务部门提出模型应用建议



任职资格



1、数学、统计学、计算机等相关专业背景,硕士及以上学历,2+年算法和大数据建模工作经验;

2. 熟练使用SQL、HIVE等数据库查询语言; 精通一门编程语言,包括但不限于PYTHON、R、C/C++、Java等

3. 对数据结构和算法有较为深刻的理解;熟练掌握主流机器学习算法,包括但不限于聚类分析、PCA、朴素贝叶斯、逻辑回归、SVM、GBDT、神经网络等,并对算法原理及底层实现有一定理解

4. 良好的逻辑思维能力,能够从海量数据中发现有价值规律,学习能力强;
!!数据挖掘算法工程师岗位描述1

工作职责 

1.搭建分布式、快速、支持海量数据的机器学习算法平台、数据挖掘平台。基于多源、海量数据的统计、特征选择、模型训练及检验评价,实现用户画像、社群发现、热点发现、特定人群挖掘、关系链预测等; 

2. 追踪和落地相关前沿技术和学术论文(深度学习等),对模型进行优化和性能提升; 

3. 参与和构建相关算法的API和工具包。 

任职要求 

1.计算机、数学、统计等相关专业硕士及以上学历(博士优先); 

2.五年以上大规模数据分析、挖掘相关工作经验; 

3.熟悉聚类、分类、回归、图模型等机器学习算法; 

4.熟悉自然语言处理,文本挖掘,topic model等,对其中某方面核心算法理解透彻,有实际建模经验者或者并行化经验者优先; 

5.熟悉C/C++、python、Java、matlab等编程语言与工具(一项或多项); 

6.熟悉Linux/Unix平台上的开发环境; 

7.熟悉Hadoop生态系统 / Storm / Spark / Neo4j、GraphX、Hive、Hbase、Pig等且有丰富实战经验者优先; 

8.具有深度神经网络DNN理论基础及实战经验者; 

9.有深厚的概率与数理统计基础者优先。


!!数据挖掘算法工程师岗位描述2

职位描述:

1.负责产品相关系统中的数据统计,分析挖掘工作;

2.应用机器学习和数据挖掘等相关技术进行产品的数据建模,如关联算法和推荐算法;

3.通过用户行为数据建模、分析用户特征等,为业务决策提供参考。

职位要求:

1.硕士以上学历,计算机、应用数学、模式识别、人工智能、统计、运筹学等专业的硕士优先;

2.2年以上相关工作经验;

3.对机器学习、数据挖掘算法及其在互联网行业的应用,有比较深入的认识和理解;

4.熟悉Linux开发环境,精通C/C++/python/java中至少一种编程语言;

5.严密的数学思维、突出的分析和归纳能力、优秀的沟通表达能力;

6.有推荐系统、定向营销、电子商务、信息处理、信息检索等方面的建模经验优先。
!!数据总监职位描述1

职责描述:

1、大数据相关产品规划设计,负责规划、设计大数据平台产品,完成需求探索、持续迭代、产品规划和设计工作;

2、制定产品规划的阶段目标,监督产品开发计划,形成可运营的大数据平台产品;

3、负责监测、整理与分析用户需求、竞品动态与行业情况,提炼出产品改进方向和细节;

4、构建行业大数据模型,研究数据,挖掘历史积累数据的潜在价值

任职要求:

1、本科及以上学历,8年以上互联网工作经验,5年以上大数据相关技术工作经验

2、有带领团队进行海量数处理、分析和挖掘的的项目经验。

有下列技能或者直接经验情况优先:

1、能够运用机器学习、深度学习和文本挖掘等技术,分析人和服务内容的特征,

2、精通Spark/Hadoop/Storm 等大规模分布式计算平台的使用和并行算法的开发经验;


!!数据总监职位描述2

岗位职责:

1) 负责搭建数据仓库的搭建,管理,维护和更新;

2) 负责ETL解决方案的选择,实施和更新 

3) 带领数据技术团队设计公司数据服务的中长期技术愿景和阶段性目标,构建集团数据分析的技术基础,并将长期的数据架构演进与短期的技术解决方案相融合; 

4) 组织相关技术路线和产品决策,指导数据仓库团队进行数据服务解决方案的实施;

5) 组织数据技术分析人员、架构师和数据产品规划人员,基于客户需求设计数据服务产品并提供高质量的数据技术服务。

任职资格:

1) 对于大数据的构建、存储和挖掘具有前瞻性的观点和5年以上实践
经验;

2) 具有互联网相关的的数据平台搭建和管理经验; 具有非结构化数据技术知识和实践经验;

3)熟悉数据端到端的全生命周期管理过程,能够指导数据质量、数据管控和数据安全体系建设;
!!数字钱包开发岗位描述1:

岗位职责:

1.  负责数字货币钱包的开发;

2.  从事区块链产品的设计和研发工作,研究区块链的协议,运行机制和底层实现等;

3.  搭建基于区块链的底层架构,能实现公链、侧链、私有链及多种逻辑,供应用层调度使用,直至提供云服务输出;

4.  组织制定和实施技术决策和技术方案,组织架构设计与升级优化。


任职资格: 

1.   2年以 数字货币钱包实际开发经验,有区块链钱包项目的开发经验;

2.   熟悉主流公链 (比特币/以太坊/EOS) 区块链底层技术和相应开发;

3.   熟悉共识算法以及算法流程;

4.   熟悉HTTP, TCP/IP, UDP 协议;

5.   熟悉密码学,安全协议和加密算法;

6.   熟悉共识算法或一致性算法者,如PoW、PBFT、PoS、DPos、RPCA、Raft熟悉各种数据结构和算法;

7.   精通Go、C++,Python、Java中至少一种;

8.   第三方支付领域,密码学领域,分布式领域,虚拟货币领域 熟悉比特币源码或其衍生货币源码的优先;

9.   软件工程或计算机相关专业。
[img[http://skillstree.test.upcdn.net/Security-by-StuQ.png]]			  

 !!文字版链接	[[安全技能图谱]]
[img[http://skillstree.test.upcdn.net/BigData-by-StuQ.png]]			   

!!文字版链接	[[大数据技能图谱]]
	[img[http://skillstree.test.upcdn.net/MachineLearning-by-StuQ.png]]			   

!!文字版链接	[[机器学习技能图谱]]
[img[http://skillstree.test.upcdn.net/Architect-by-StuQ.png]]			   

!!文字版链接	[[架构师技能图谱]]
	[img[http://skillstree.test.upcdn.net/ProgrammingLanguage-by-StuQ.png]]			  

 !!文字版链接	[[开发语言技能图谱]]
		[img[http://skillstree.test.upcdn.net/EmbeddedEngineer-by-StuQ.png]]			  

 !!文字版链接	[[嵌入式开发技能图谱]]
							
		[img[http://skillstree.test.upcdn.net/Container-by-StuQ.png]]			  

 !!文字版链接	[[容器Container技能图谱]]
							
		[img[http://skillstree.test.upcdn.net/MicroService-by-StuQ.png]]			  

 !!文字版链接	[[微服务MicroService技能图谱]]
	[img[http://skillstree.test.upcdn.net/MobileTesting-by-StuQ.png]]			  

 !!文字版链接	[[移动无线测试技能图谱]]
	[img[http://skillstree.test.upcdn.net/MobileOptimization-by-StuQ.png]]			  

 !!文字版链接	[[移动性能优化技能图谱]]
							
	[img[http://skillstree.test.upcdn.net/CloudComputing-by-StuQ.png]]			  

 !!文字版链接	[[云计算技能图谱]]
		[img[http://skillstree.test.upcdn.net/IntelligentDevOps-by-StuQ.png]]			  

 !!文字版链接	[[智能运维技能图谱]]
							
		[img[http://skillstree.test.upcdn.net/AndroidArchitect-by-StuQ.png]]			  

 !!文字版链接	[[Android 架构师技能图谱]]
		[img[http://skillstree.test.upcdn.net/Angular2-by-StuQ.png]]		
	

!!文字版链接	[[Angular2技能图谱]]
[img[http://skillstree.test.upcdn.net/CTO-by-StuQ.png]]			  

 !!文字版链接	[[CTO技能技能图谱]]
[img[http://skillstree.test.upcdn.net/DBA-by-StuQ.png]]			  

 !!文字版链接	[[DBA技能图谱]]
							
[img[http://skillstree.test.upcdn.net/Hadoop-by-StuQ.png]]			   

!!文字版链接	[[Hadoop技能图谱]]
[img[http://skillstree.test.upcdn.net/HTML5-by-StuQ.png]]			   

!!文字版链接	[[HTML5开发技能图谱]]
[img[http://skillstree.test.upcdn.net/iOSDev-by-StuQ.png]]			   

!!文字版链接	[[iOS 开发技能图谱]]
		[img[http://skillstree.test.upcdn.net/Kubernetes-by-StuQ.png]]			   

!!文字版链接	[[Kubernetes技能图谱]]
		[img[http://skillstree.test.upcdn.net/OpenResty-by-StuQ.png]]			  

 !!文字版链接	[[OpenResty技能图谱]]
		[img[http://skillstree.test.upcdn.net/FrontEnd-by-StuQ.png]]			  

 !!文字版链接	[[Web前端技能图谱]]
工作职责:

1、搜索引擎相关策略的开发工作,包括但不限于query解析、相关性、CTR优化等;

2、特征工程等包括但不限于海量数据挖掘、结构化数据解析、特征提取、特征分析等算法的开发,理解用户数据分析和挖掘应用场景,抽象为数据产品需求,不断完善基础特征建设;

3、NLP相关工作,包括但不限于语义理解、内容结构化、核心词抽取、知识图谱的构建和应用。

职位要求:

1、热爱互联网,对搜索技术、探索未知领域有浓厚的兴趣;

2、熟悉数据挖掘相关算法(神经网络、决策树、SVM、聚类、逻辑回归、贝叶斯),有扎实的基本功和良好的逻辑思维能力

3、熟悉NLP技术,有深度学习相关工作者优先;
职位描述:

1.能抽象业务问题中的算法规划、数据挖掘和模型设计,应用阿里现有的工业产品及数据工具给出解决方案,调优完善达到项目交付标准,并能支持运维阶段的优化;

2.能对交付项目中的定制化需求进行判断和筛选,与产品经理、架构、数据人员充分沟通,推进算法应用/产品成熟;

3.能配合销售、售前团队,支撑判断算法交付能力制订交付及运维标准;

任职要求:

1.5年以上工作经验,其中3年以上数据挖掘项目经验,熟悉常用的数据挖掘与机器学习技术;

2.具备编码能力,至少熟悉Java,Python,R,C/C++其中一门编程语言,有分布式计算基础和算法能力优先;

3.本科及以上学历,数学、运筹学、计算机、自动化以及其他相关专业教育背景;

4.能够适应高强度工作和差旅,善于团队协作
!算法课程


!!什么是机器学习
<iframe width="1000" height="415" src="http://chongdianleme.com/pages/null?url=//v.youku.com/v_show/id_XMzg3NjkyMzAyNA==.html&fx=1&yqm=1L08P655" frameborder="0" allowfullscreen></iframe>

!!第九课:七分钟带你读懂深度学习之循环神经网络
<iframe width="1000" height="415" src="http://chongdianleme.com/pages/null?url=//v.youku.com/v_show/id_XMjYwODk4NTUzNg==.html&fx=1&yqm=1L08P655" frameborder="0" allowfullscreen></iframe>


  !!人工智能科普课程(普通人入门版)

<iframe width="1000" height="450" src="http://chongdianleme.com/pages/pkepu.html?url=kepu&fx=1&yqm=1L08P655" frameborder="0" allowfullscreen></iframe>



!!人工智能专家课程(专业人士进阶版)
<iframe width="1000" height="415" src="http://chongdianleme.com/pages/pai.html?url=ai&fx=1&yqm=1L08P655" frameborder="0" allowfullscreen></iframe>








  


!!岗位描述1

工作职责 

1.负责医学DICOM影像的重现算法研究和实现; 

2.负责DICOM影像后处理算法的研究和实现; 

3.负责影像三维处理算法的研究和实现; 

4.负责影像算法模块的编写。 

任职要求 

1.精通C++/Python语言并相关框架; 

2.熟练运用dcmtk、gdcm、vtk、itk、OpenCV、OpenGL等类库和框架; 

3.熟练运用numpy、scipy、matplot、pillow等Python包及其相关扩展包; 

4.有医疗行业PACS系统开发经验或熟悉leadtools等相关商业工具包者优先。 

5.熟悉PET图像融合者优先。 

6.熟悉深度学习在医学影像领域应用者优先。


!!岗位描述2

工作职责

1. 负责图像处理相关算法的原型设计,性能仿真以及优化;

2. 负责图像处理相关模块的系统设计,实现以及优化;

3. 参与以上算法的产品落地以及相关算法在芯片中的设计和实现;

4. 参与开发过程中的项目管理,组织不同算法团队之间的分工,迭代,沟通等工作。



任职要求

1. 图像处理,模式识别,通信,信号处理等相关专业硕士及以上学历;

2. 具备ISP核心算法(去噪,插值,锐化,颜色链路等模块)的主要开发和设计经验;

3. 具备C/C++/python/matlab语言能力,具有算法快速仿真能力,最好有硬件友好支持的cmode设计开发经验,对于ISP整体链路的开发和画质调节有一定的理解;

4. 具备一般机器学习算法相关知识,熟悉相机相关业务(人脸识别,分割,检测,融合,增强等);

5. 具备较强抗压能力,有一定团队管理经验者优先。


!!岗位描述3

工作职责 

1.负责计算机视觉算法研发,包括但不限于图像分类,目标检测、识别,语义分割,OCR,表情识别,视频分析等前沿技术的研发


2.跟踪前沿图像算法,甄别技术成熟度,将其工程化应用到公司相关AI产品和系统上,实现效果、性能等各方面的优化 ; 

3.负责公司各业务中视觉相关的场景的需求探讨、技术方案设计、建模及开发落地。 

任职要求 

1. 计算机、数学、统计、电子工程等相关专业,硕士及以上学历。 

2. 掌握目标检测,图像识别等常见算法,并有相关项目工作经验。 

3. 有算法的实际产品化经验者优先。 

4. 扎实的编程能力,需熟练掌握Python及PyTorch,TensorFlow等任一深度学习框架。
工作职责



1.负责个性化推荐算法的开发和实施,标签选择,模型训练,排序,在商品推荐、店铺推荐、内容推荐、促销活动等场景中提高用户体验与流量利用效率

2.负责对商城内点击流等用户行为数据进行挖掘和分析,敏锐的捕获数据价值和产品机会,从数据及算法上支持业务发展 

3.跟踪推荐结果,不断优化算法,提升推荐转化率

''任职资格''

1.要求候选人计算机、数学或统计学等相关专业,精通常用机器学习、数据挖掘等相关理论,对深度学习有所实践者优先 

2.具备2年以上电商行业推荐工作经验, 精通相关领域协同过滤、矩阵分解、LTR等算法模型,在召回、排序方向有丰富的实战经验者优先

3.熟悉各种常用机器学习算法(LR,XGBoost,CNN,RNN等)及相关的数据处理和参数调优

4.了解电商和互联网金融行业数据,有大数据计算平台如Hadoop上的开发经验

5.具备一种或多种高级语言及脚本语言的(如java,C++,Python等)的程序和算法开发能力,掌握常用数据结构和算法

6.具有良好的沟通协作能力,具有较强的分享意愿,对业务有很好的理解能力
第三挖井人:[[YuGongde|yugongde]]

第二挖井人:Tiddlyspot团队

第一挖井人:Tiddlywiki团队


''什么是挖井人计划''

吃水不忘挖井人

信息爆炸的时代,经过收集整理的信息便于大家查询和梳理知识体系。

挖井人计划就是记录收集整理这些信息的贡献者们。

注意,每一位使用本文件梳理知识体系的人,也都是挖井人,不管你是将梳理后的文件供自己使用还是分享出来让更多人参考。
作者:陈鑫杰,拼客学院创始人
 

链接:[[微信公众号文章:拼客院长陈鑫杰|https://mp.weixin.qq.com/s/GZW8QssueLzySJSAHj2lGQ]]

!概述

之前的文章《我所看到的安全行业趋势》中,给大家分析了安全行业目前的发展趋势以及安全防御和渗透攻击两端不同的技术栈需求。在这篇文章里面,我们聚焦以下常见的安全行业求职和职业发展问题:

* 安全行业如何区分?
* 安全岗位到底有哪些?
* 不同安全岗位的技术需求和岗位职责有什么区别?
* 适合我们的安全岗位又有哪些?
* 有哪些公司在招聘安全人才?
* 安全企业的排名情况大体是怎样的?
* XXX公司好,还是YYY安全好?
* 安全行业的薪酬标准是如何的?

安全行业大而杂,个人能力有限,尽所能将2013年到2017年拼客学院发展的这4年时间中,不同安全企业在拼客学院内推招聘沟通、安全岗位需求沟通、学员求职辅导、毕业学员的入职岗位和薪酬情况、以及学员后续的职业路线(跳槽趋势)、个人在安全集成、等保安全、政务税务金融等安全项目经验和技术圈来做分析。





!1. 安全行业到底有多少领域?具体在做什么?区别与联系是什么?

根据不同的安全规范、应用场景、技术实现等,安全可以有很多分类方法,在这里我们简单分为网络安全、Web安全、云安全、移动安全(手机)、桌面安全(电脑)、主机安全(服务器)、工控安全、无线安全、数据安全 等不同领域。下面以个人所在行业和关注点,重点探讨网络/Web/云这几个安全方向。

!!1.1 网络安全
''[网络安全] ''是安全行业最经典最基本的领域,也是目前国内安全公司发家致富的领域,例如启明星辰、绿盟科技、天融信这几个企业(“老三大” )。

这个领域研究的技术范畴主要围绕防火墙/NGFW/UTM、网闸、入侵检测/防御、VPN网关(IPsec/SSL)、抗DDOS、上网行为管理、负载均衡/应用交付、流量分析、漏洞扫描等。通过以上网络安全产品和技术,我们可以设计并提供一个安全可靠的网络架构,为政府/国企、互联网、银行、医院、学校等各行各行的网络基础设施保驾护航。


大的安全项目(肥肉…)主要集中在以政府/国企需求的政务网/税务网/社保网/电力网… 以运营商(移动/电信/联通)需求的电信网/城域网、以银行为主的金融网、以互联网企业需求的数据中心网等。以上这些网络,承载着国民最核心的基础设施和敏感数据,一旦泄露或者遭到非法入侵,影响范围就不仅仅是一个企业/公司/组织的事情,例如政务或军工涉密数据、国民社保身份信息、骨干网络基础设施、金融交易账户信息等。


当然,除了以上这些,还有其他的企业网、教育网等也需要大量的安全产品和服务。网络安全项目一般会由网络安全企业、系统集成商、网络与安全代理商、IT服务提供商等具备国家认定的计算机系统集成资质、安全等保/分保等行业资质的技术单位来提供。



''[技能需求]''

网络协议:TCP/IP、VLAN/Trunk/MSTP/VRRP/QoS/802.1x、OSPF/BGP/MPLS/IPv6、SDN/Vxlan/Openflow…

主流网络与安全设备部署:思科/华为/华三/锐捷/Juniper/飞塔、路由器/交换机、防火墙、IDS/IPS、VPN、AC/AD…

网络安全架构与设计:企业网/电信网/政务网/教育网/数据中心网设计与部署…

信息安全等保/分保理论、金土/金税工程…
……



''[补充说明]''

1、不要被电影和新闻等节奏带偏,战斗在这个领域的安全工程师非常非常多,不是天天攻击别人写攻击代码写病毒的才叫做安全工程师;

2、这个安全领域研究的内容除了defense(防御)和security(安全),相关的Hacking(攻击)技术包括协议安全(arp中间人攻击、dhcp泛洪欺骗、STP欺骗、DNS劫持攻击、HTTP/VPN弱版本或中间人攻击…)、接入安全(MAC泛洪与欺骗、802.1x、WiFi暴力破解…)、硬件安全(利用NSA泄露工具包攻击知名防火墙、设备远程代码执行漏洞getshell、网络设备弱口令破解.. )、配置安全(不安全的协议被开启、不需要端口服务被开启…)…

3、学习这个安全方向不需要太多计算机编程功底(不是走研发路线而是走安全服务工程师路线),更多需要掌握常见安全网络架构、对网络协议和故障能抓包分析,对网络和安全设备能熟悉配置;

4、参考课程:《拼客学院CCIE魔鬼训练营》。


!!1.2 Web安全
Web安全领域从狭义的角度来看,就是一门研究[网站安全]的技术,相比[网络安全]领域,普通用户能够更加直观感知。例如,网站不能访问了、网站页面被恶意篡改了、网站被黑客入侵并泄露核心数据(例如新浪微博或淘宝网用户账号泄露,这个时候就会引发恐慌且相继修改密码等)。当然,大的安全项目里面,Web安全仅仅是一个分支,是需要跟[网络安全]是相辅相成的,只不过Web安全关注上层应用和数据,网络安全关注底层网络安全。


随着Web技术的高速发展,从原来的[Web不就是几个静态网页吗?]到了现在的[Web就是互联网],越来越多的服务与应用直接基于Web应用来展开,而不再仅仅是一个企业网站或论坛。如今,社交、电商、游戏、网银、邮箱、OA…..等几乎所有能联网的应用,都可以直接基于Web技术来提供。


由于Web所承载的意义越来越大,围绕Web安全对应的攻击方法与防御技术也层出不穷,例如WAF(网页防火墙)、Web漏洞扫描、网页防篡改、网站入侵防护等更加细分垂直的Web安全产品也出现了。



''[技能需求]''
Web安全的技能点同样多的数不过来,因为要搞Web方向的安全,意味初学者要对Web开发技术有所了解,例如能通过前后端技术做一个Web网站出来,好比要搞[网络安全],首先要懂如何搭建一个网络出来。那么,Web技术就涉及到以下内容:

通信协议:TCP、HTTP、HTTPs

操作系统:Linux、Windows

服务架设:Apache、Nginx、LAMP、LNMP、MVC架构

数据库:MySQL、SQL Server、Oracle

编程语言:前端语言(HTML/CSS/JavaScript)、后端语言(PHP/Java/ASP/Python)



如果按照上面的技能全部学完,不仅时间周期非常长,估计大部分人连学后面安全的兴趣都没有了。所以,这就说到Web安全这个行业另外一个常态了:大部分做Web安全的,并不是刚开始就对Web开发技术非常熟悉的,很多都是半路杀出来了,甚至连Web网站都没有架设过的,这种大有人在。

因此有更加狭义的Web安全技术点:

安全理论:OWASP TOP 10 、PETS、ISO 27001…

后端安全:SQL注入、文件上传、Webshell(木马)、文件包含、命令执行…

前端安全:XSS跨站脚本攻击、CSRF跨站请求伪造…

安全产品:Web漏洞扫描(Burp/WVS/Appscan)、WAF(Web应用防火墙)、IDS/IPS(Web入侵防御)、Web主机防护



因此,Web开发技术和Web安全技术其实是相辅相成的,如果对Web开发比较熟悉,意味着研究Web安全时能够更加底层,而不止于安全工具和脚本层面。



''[补充说明]''

1、学习Web安全方向需要有一定的编程基础,如果对代码没兴趣,建议走[网络安全]方向;

2、[网络安全]和[Web安全]在安全领域里面刚好是对立面存在,一硬一软、一防一攻、一上(上层)一下(底层);

3、参考课程:《拼客学院Linux运维精品班》、《拼客学院Web安全渗透系列课》。


!!1.3 终端安全(移动安全/桌面安全)

移动安全主要研究例如手机、平板、智能硬件等移动终端产品的安全,例如iOS和Android安全,我们经常提到的“越狱”其实就是移动安全的范畴。而近期爆发的危机全球的Windows电脑蠕虫病毒 - “WannerCry勒索病毒”,或者更加久远的“熊猫烧香”,便是桌面安全的范畴。



桌面安全和移动安全研究的技术面都是终端安全领域,说的简单一些,一个研究电脑,一个研究手机。随着我们工作和生活,从PC端迁移到了移动端,终端安全也从桌面安全迁移到移动安全。最熟悉不过的终端安全产品,便是360、腾讯、金山毒霸、瑞星、赛门铁克、迈克菲McAfee、诺顿等全家桶……


从商业的角度看,终端安全(移动安全加桌面安全)是一门to C的业务,更多面向最终个人和用户;而网络安全、Web安全、云安全更多是一门to B的业务,面向政企单位。举例:360这家公司就是典型的从to C安全业务延伸到to B安全业务的公司,例如360企业安全便是面向政企单位提供安全产品和服务,而我们熟悉的360安全卫士和杀毒则主要面向个人用户。


!!1.4 云安全
[云安全] 是基于云计算技术来开展的另外一个安全领域,云安全研究的话题包括:软件定义安全、超融合安全、虚拟化安全、机器学习+大数据+安全…..  目前,基于云计算所展开的安全产品已经非常多了,涵盖原有网络安全、Web安全、移动安全等方向,包括云防火墙、云抗DDOS、云漏扫、云桌面等,国内的腾讯云、阿里云已经有相对成熟的商用解决方案出现。


云安全在产品形态和商用交付上面,实现安全从硬件到软件再到云的变革,大大减低了传统中小型企业使用安全产品的门槛,以前一个安全项目动辄百万级别,而基于云安全,实现了真正的按需弹性购买,大大减低采购成本。另外,云时代的安全也给原有行业的规范和实施带来更多挑战和变革,例如,托管在云端的商用服务,云服务商和客户各自承担的安全建设责任和边界如何区分?云端安全项目如何做信息安全等保测评?



[补充说明]

* 1、安全发展趋势:从硬件到软件再到云安全、从被动防御到主动防御、从单点到全局
* 2、安全的未来:“机器学习+大数据+ 云安全” 或 “AI + 安全”,会不会成为行业终点?(举例:越来越多的服务直接基于云展开,以云服务商为代表的阿里云/腾讯云对其他安全企业的跨界打击)
* 
* 3、求职情况:目前国内的云服务厂商在不断挖角传统网络安全厂商的人才(无论是研发还是工程实施),而且已经到了批量挖角的局面(具体哪里的,这里暂时就不提了...)


!!1.5 工控安全
以震网病毒(stuxnet)攻击伊朗核电厂并使其瘫痪的全球事件,从安全领域活生生撕开一道口并告诉我们,工控病毒才是真正代替核武器战争的代表。相比其他安全方向,工控安全研究的攻防对象是工业基础设施,真正影响人类生活的方方面面,例如核电、电力、水力、城市交通等基础设施。随着万物互联/物联网的进程不断推进,工控安全会成为我们继互联网和移动互联网安全之后研究的重心。





!2. 安全行业到底有多少岗位?技术需求和岗位职责是什么?适合我们的安全岗位又有哪些?

!!2.1 安全岗位
以安全公司招聘的情况来分,安全岗位可以以研发系、工程系、销售系来区分,不同公司对于安全岗位叫法有所区分,这里以行业常见的叫法归类如下:

''研发系'':安全研发、安全攻防研究、逆向分析

''工程系'':安全工程师、安全运维工程师、安全服务工程师、安全技术支持、安全售后、Web渗透测试工程师、Web安全工程师、应用安全审计、移动安全工程师

''销售系'':安全销售工程师、安全售前工程师、技术解决方案工程师


!!2.2 适合我们的岗位有哪些?
拼客学院这边毕业学员主要走安全工程系,我们目前主要应聘的岗位是:安全工程师、安全运维、安全服务工程师、Web渗透测试、Web安全工程师,当然,也有部分学员在做安全研发和安全售前岗位。

例如在安全公司如绿盟科技、深信服、360、天融信等做安全工程师、安全服务、渗透测试等岗位,在甲方单位例如运营商(中国移动、中国电信)、金融类公司(平安科技、招商银行)等更多做安全运维、Web应用审计、Web渗透测试等岗位


!!2.3 常见的安全岗位职责
这里仅列举部分,更多岗位可以到各类招聘网站如[拉勾网]上搜索相关的岗位,也可以了解不同类型公司对安全岗位的要求;也可以到知名安全公司的官网、微信公众号上了解他们校招和社招的信息;以下是平常在拼客学院招聘/内推的比较多的岗位,直接贴他们的招聘需求=>



''[安全工程师]''(产品与售后方向)
职位描述
负责网络安全项目中的产品调试和交付
负责网络安全项目中的技术方案编写
负责客户的安全应急和售后驻场


''职位要求''

* 具备扎实的计算机与网络原理,熟悉各类网络与安全设备(路由、交换、防火墙、VPN、漏洞扫描)
* 对网络数据包具备分析实践能力,熟练使用数据包分析工具;
* 熟悉常见网络通信协议(TCP/IP、交换路由协议、VPN协议等)
* 熟悉防火墙原理,能够熟练配置防火墙策略;
* 熟悉主流网络与安全厂商产品(思科/华为/华三/Juniper…)
* 较好的文档撰写能力、语言表达和与沟通能力。



''[安全服务工程师]''
职位描述

* 负责安全服务项目中的实施部分,包括:漏洞扫描、渗透测试、安全基线检查、代码审计、应急响应等;
* 爆发高危漏洞后时行漏洞的分析应急;
* 对公司安全产品的后端支持;
* 掌握专业文档编写技巧;
* 关注行业态势和热点。


职位要求

* 掌握一门及以上编程语言;
* 熟悉常见安全攻防技术;
* 有较强学习能力,能快速学习新的技术;
* 熟悉风险评估、应急响应、渗透测试、安全加固等安全服务;
* 具有良好的语言表达能力、文档组织能力。



''[安全运维工程师]''
职位描述

* 服务器与网络基础设备的安全加固;
* 安全事件排查与分析,配合定期编写安全分析报告,专注业内安全事件;
* 跟踪最新漏洞信息,进行业务产品的安全检查;
* 负责信息安全策略/流程的制定,安全培训/宣传及推广;
* 负责Web漏洞和系统漏洞修复工作推进,跟踪解决情况,问题收集。


职位要求

* 熟悉主流的Web安全技术,包括SQL注入、XSS、CSRF等OWASP TOP 10安全风险;
* 熟悉TCP/IP协议,路由交换、常用的应用层协议;
* 熟悉Linux/Windows下系统和软件的安全配置与加固;
* 熟悉常见的安全产品及原理,例如IDS、IPS、防火墙等;
* 熟练掌握C/PHP/Python/Shell等一或多种语言;
* 较好的文档撰写能力、语言表达和与沟通能力。



''[Web安全工程师/渗透测试]''
职位描述

* 对公司各类系统进行安全加固;
* 对公司网站、业务系统进行安全评估测试(黑盒、白盒测试);
* 对公司安全事件进行响应,清理后门,根据日志分析攻击途径;
* 安全技术研究,包括安全防范技术,黑客技术等;
* 跟踪最新漏洞信息,进行业务产品的安全检查。


职位要求

* 熟悉Web渗透测试方法和攻防技术,包括SQL注入、XSS跨站、CSRF伪造请求、命令执行等安全漏洞与防御;
* 熟悉Linux、Windows不同平台的渗透测试,对网络安全、系统安全、应用安全有深入的理解和自己的认识;
* 熟悉国内外主流安全工具,包括Kali Linux、Metasploit、Nessus、Nmap、AWVS、Burp、Appscan等;
* 至少掌握一门编程语言C/JS/Python/PHP/Java/JS等;
* 对Web安全整体有深刻理解,有一定的代码审计和漏洞分析和挖掘能力;
* 具有较强的团队意识、高度的责任感,有良好的文档和沟通能力;


!!2.4 安全岗位总结

走安全行业的工程方向的,技术上面其实有很大的重叠性,抛开甲乙方、岗位名称、岗位职责等因素来看,作为学技术的,也根据以往我们给学员推荐就业和入职情况来看,只要好好掌握以下几种技术(网络协议与安全设备、Linux操作系统、Web服务部署/开发、主流渗透测试/安全工具、一门及以上的编程语言)中的2到3个,都可以较好的胜任工作需求。



当然,从行业新人入职到真正通往大神,这里是“0到1”和“1到100”的区别了,到了工作场景中,能否根据工作需求,再横向和纵向拓展个人技术栈,这块修行就完全靠个人了,例如,这边毕业的学员,有从安全运维和售后转向安全渗透岗的,有从安全渗透岗转到安全研发的,有从安全公司跳到互联网公司的,有从互联网公司跳到安全初创企业的……)





!3. 有哪些公司在招聘安全人才?薪酬标准是如何的?安全行业的薪酬标准是如何的?去哪里如何找到合适的安全公司和岗位

!!3.1 有哪些公司在招聘?
安全工程师已经成为一个必选项,所以已经没法再一一列举出来了,无论是互联网公司,还是网络与安全公司,还是银行、运营商、政府等,都需要安全人才加入,所以,这里更多列举拼客学院刚毕业学员拿到过的校园招聘的岗位。

网络安全公司:360企业安全、绿盟科技、天融信、启明星辰、深信服、蓝盾科技、网康、斗象科技(Freebuf)、华为、锐网络……



互联网公司:腾讯(安平部安全实施-DDOS方向)、YY(安全研发)、4399(安全运维)…..



运营商/国企:中国移动(安全运维)、中国电信(安全运维)、平安科技(安全运维)…….



系统集成商:神州数码(F5工程师)、华讯网络(安全项目部署、亚信科技(安全运维)、中通服科技(安全售后与交付)…….



相关招聘链接和截图:

* 腾讯:http://join.qq.com/index.php
* 阿里:https://job.alibaba.com/zhaopin/index.htm
* 百度:https://www.lagou.com/jobs/2568043.html
* 知乎:https://www.lagou.com/jobs/2404127.html?source=position_rec&i=position_rec-1
* 小米:https://www.lagou.com/jobs/2869721.html?source=position_rec&i=position_rec-4
* 360:http://campus.chinahr.com/2017/360/
* 绿盟:http://campus.51job.com/lvmen0823_7058wh/3_5.html
* 启明:https://www.lagou.com/gongsi/j9231.html
* 深信服:https://www.lagou.com/gongsi/182070.html#company_navs









!!3.2 安全行业薪酬情况

薪酬这块,根据岗位的入职薪酬来看,一般都是遵循:【安全研发 > 安全服务/渗透测试/Web渗透 > 安全售后/安全技术支持】。当然,不同类型的公司,发展过程中给出的薪酬也会有所差异,广深地区这边,根据学员入职安全岗位的整体情况来看,【互联网公司> 网络/安全公司 ≈ 运营商/国企 > 系统/安全集成商 】,薪酬(大学生应届毕业)上面主要分三个档(月薪):6到8k,8到10k、10到12k;从这几年的安全薪酬趋势来看,应届刚入职的这个行业的起薪越来越高了,想起2013年广州这边的学员刚入职某知名安全公司,那个时候是5k,而现在是9k,也有部分特例例如拿到某信服安全攻防岗18w年薪的…. 



除了入职薪酬,如果要看发展势头和未来增长性的话,建议还是直接到类似拉勾网(智联、51Job)之类的招聘网站,或者到企业的官网招聘页面,搜索以上所聊到的岗位名称或者公司,看他们的招聘需求,例如1到3年和3到5年不同工程师等级的薪酬差别,也可以给自己定一个小目标。截图举例:



搜索[网络安全工程师]

搜索[安全工程师]


搜索[渗透测试工程师]


搜索[Web安全工程师]




!!3.3 网络安全面经汇总(针对应届大学生和职场新人为主)

绿盟科技安全服务工程师面经(小乔):http://www.pinginglab.net/article/42

360安全服务工程师面经(汤同学):http://www.pinginglab.net/article/36

360安全服务工程师面经(刘同学):http://www.pinginglab.net/article/24

中国移动信息安全工程师面经(小鸣):http://www.pinginglab.net/article/23

……



【推荐阅读】有没有国内安全公司的总列表、或者安全企业的排名情况,帮助我更好的选择安全公司?

以下两篇文章的仅供参考。

为什么要推荐大家看这两篇文章呢?因为很多小伙伴们在学习技术课程、入门安全行业之前,能够完整讲出名称的网络/安全公司,就只有360或者华为之类的,所以多了解几个安全公司,多去翻阅他们的官网,了解不同安全公司的核心产品是什么,查看他们的人才招聘需求以及不同岗位的技能需求区分,培养自己的"安全嗅觉",这也是入门和求职的必备技能。

来自[安全牛]:2017上半年网络安全公司排名
http://mp.weixin.qq.com/s/LbK2t55ZK9lSOgfY8pc1nQ

来自[游侠安全网]:国内网络安全公司全参考
http://mp.weixin.qq.com/s/v0rAlj1nrkFAdErTPJv5wA


作者:陈鑫杰

链接:[[微信公众号文章:拼客院长陈鑫杰|https://mp.weixin.qq.com/s/GZW8QssueLzySJSAHj2lGQ]]
 !微服务架构 技能图谱

! 理论基础
! 概念
!! 多微合适
   *非代码函数
   *非重写时间
   *适合团队最重要
     *独立业务属性
     *全功能团队	     		
  
!! 进程隔离
  *服务运行在独立的进程中

!! 轻量级通信
  *协议跨平台
  *格式语言无关

!! 独立性
  *独立开发
  *独立测试
  *独立部署
  

! 本质		
  *服务作为组件
  *围绕业务组织团队
  *产品驱动而非项目驱动
  *技术多样性
  *业务数据独立
  *基础设施自动化
  *演进式架构
  
! 优点	
   *按需伸缩
   *独立部署
   *业务独立
   *技术多样性

! 缺点
!! 1. 运维成本高
  *环境配置(Provisioning)
  *部署
  *监控 

!! 2. 测试成本高	
  *自动化测试
  *契约测试

!! 3. 依赖管理成本高
  *版本管理
  *服务依赖
  *服务治理	

! 与SOA的差异点
   *实现方式
   *服务粒度
   *集成方式
   *部署方式

! 常用模式	

! 部署模式
  *单机多实例
  *单机单实例
  *容器多实例
  *容器单实例

! 服务发现	
  *客户端发现
  *服务器端发现

!! 常用库/工具
  *Consul
  *Eureka
  *SmartStack
  *Etcd

! API网关
  *请求转发
  *响应合成
  *协议转换
  *安全认证

! 服务注册
  *自注册
  *第三方注册
!! 常用库/工具
    *Consul
    *Eureka

! 服务配置
 	
! 组织结构
*全功能团队
*去中心化
*康威定律

! 数据相关
*数据库
  *RDBMS
  *NOSQL	
*数据伸缩
  *读
  *写
  *缓存
*业务数据隔离


! 安全策略
  *单点登录
  *点对点验证
  *安全网关

! 通信机制
! 同步通信
  *RPC/RMI
  *Java RMI
  *Thrift
*Protocol Buffer
  *REST
	  *HAL

! 异步通信
!! 消息队列
  *ActiveMQ
  *MSMQ
  *RabbitMQ
  
!! 后台任务
  *Sidekiq
  *Resque	


! 开发实践
! 开发模板
!! JAVA栈
  *SpringBoot
  *SpringCloud
  *DropWizard
	
!! Ruby栈(其他脚本语言类似)
  *代码结构
  *测试结构

!! 配置文件模板
  *WEB服务器配置
*日志格式
*监控文件配置
*告警文件配置

!! 部署脚本模板
*Shell
*Chef
*Puppet
*Ansible

!! 持续集成模板
*Jenkins
*Bamboo

! 服务说明文件
*服务描述
*责任人
*请求/响应描述
*开发环境搭建
*运行环境
*测试策略
*部署方式
*监控告警

! 服务结构
*模型表示层
*业务模型
*业务逻辑
*模型存储
*集成网关	

! 测试实践
! 单元测试
*基于Mock/Stub
*基于真实依赖

! 集成测试
*服务间集成
*数据库集成
*与第三方接口集成

! 组件测试
*进程内
*进程外

! 契约测试
*PACT
*PACTO

! E2E测试
*Selenium
*WebDriver

! 性能测试
*Gatling
*JProfiler
*JMeter
*Simperf

! 部署实践
!! 部署环境
*数据中心/VM
*公有云(IAAS/PASS)
*私有云(IAAS/PASS)
*容器化

!! 应用部署
*包部署(Tar、RPM、War)
*映像部署(AMI/...)
*容器部署(Docker)

!! 基础设施部署工具
*Chef
*Puppet
*Ansible
*CloudFormation

!! 部署策略
*蓝绿部署
*Immutable Deployment

!! 自动化策略
*依赖持续部署流水线
*基础设施自动化
*应用部署自动化

!! 伸缩策略
!! Scaling Cube
*X轴水平克隆
*Y轴功能性按需伸缩
*Z轴数据分离	

! 运维实践
!! 监控
!! 系统监控
*CPU
*内存
*磁盘

!! 应用监控
*健康性
*响应时间
*关联ID(Correlation ID)
*业务相关Metrics

!! 工具

!!! SAAS		
  *NewRelic
  *OneAPM			

!!! Hosted
  *Nagios
  *Zabbix
	

!! 告警
!! 告警方式
*电话
*短信
*邮件
*即时通信工具

!! 告警级别
  *OnCall
  *Backup
  *Owner
  *Leader

!! 工具
*Splunk
*Nagois
*PagerDuty

!! 日志聚合
*聚合每个服务实例的日志
*关联相关日志

!! 工具
*Splunk
*ELK(ElasticSearch/LogStash/Kabana)
*Fluent
*Flume
!关于本文档

!!本文档用途:

梳理知识体系,分享知识成果,构建''个人知识手册''

!!本文档使用方法:

一、点击右上角的【保存变更】按钮,可以将本文档保存在你的电脑中。
保存后的文档可以随时点开访问(只要你的电脑或手机中有浏览器,IE,Chrome,火狐,或者360浏览器都可以,~~不建议使用搜狗浏览器,会显示bug~~)。


二、点击每个条目的【编辑】按钮,就可以编辑内容,然后点【确定】按钮,就可以保存


三、保存在你电脑中的文档可以任意编辑,不会改变本网站中的内容

四、欢迎将你整理过的知识手册发给我们,向更多人分享你的知识成果

''分享方式:''

如果你的知识手册是在目前文档上的局部修改或者添加,我们会将改动内容添加到本文档,并备注贡献者

如果你的个人图书馆有较大改动,或者自成体系,我们将会为你单独建立页面和链接,供大家分享。

联系我们:

[img[yugongde.jpeg]]

致谢:本文档采用Tiddlywiki技术
岗位职责:

1.负责公司IT系统的整体蓝图规划和业务模型架构。

2.负责搭建IT系统项目的评估体系与业务需求审计流程。

3.负责推进IT规划落地与迭代式变革。

4.负责提升产品团队的业务能力。

任职资格:

1.大学本科及以上学历;

2.七年以上工作经历,五年以上大中型公司IT规划经验;

3.熟悉业务,熟悉行业系统产品,具备商业理解,IT规划的战略能
力,和具体执行的战术经验;

4.技术出身,懂产品,精通业务。
项目管理的工作在于负责整个项目的需求和开发进度
 
比如协调技术、产品、运营等部门把产品更好的实现

!!项目管理常见岗位
	
*	[[项目经理]]
*	[[系统规划]]

!!岗位描述1

职位职责: 

1、 负责项目的进度把控,合理进行资源调配; 

2、 按照IPD流程进行产品的全生命周期项目管理,并督促研发人员按期交付; 

3、 制定合理的整体项目计划、控制项目总体成本并撰写项目相关过程文档; 

4、 推动多条产品线研发、协调各项资源、及时处理项目问题、跟进项目进度并管控风险。 

职位要求: 

1、全日制本科及以上学历,计算机、通信、电子等相关专业背景; 

2、5年及以上工作经验,3年及以上项目管理经验; 

3、熟悉开发流程

4、熟悉项目管理方法、管控流程(如立项、变更、结项等)和管理工具(如MS Project软件)等; 


5、较强的跨部门沟通能力、组织协调和问题解决的能力,能够同时处理多个项目,有项目群管理的能力; 

6、思路清晰、具备较强的逻辑分析能力、语言和书面表达能力。


!!岗位描述2


!!项目经理

1、 确保项目目标的实现,领导项目团队准时、优质地完成全部工作。

2、 与客户沟通,了解项目的整体需求。并与客户保持一定的联系,即时反馈阶段性的成果,和即时更改客户提出的合理需求。

3、 制定项目开发计划文档,量化任务,并合理分配给相应的人员。

4、 跟踪项目的进度,协调项目组成员之间的合作。

5、 监督产生项目进展各阶段的文档,并与QA即时沟通,保证文档的完整和规范。

6、 开发过程中的需求变更,项目经理需要跟客户了解需求,在无法判断新的需求对项目的整理影响程度的情况下,需同项目组成员商量,最后决定是否接收客户的需求,然后再跟客户协商。确定要变更需求的情况下,需产生需求变更文档,更改开发计划,通知QA。

7、 项目提交测试后,项目经理需了解测试结果,根据测试的bug的严重程度来重新更改开发计划。

8、 向上汇报。向上级汇报项目的进展情况,需求变更等所有项目信息。

9、 项目完成的时候需要项目总结,产生项目总结文档。

!!敏捷教练

1.参与公司产品工程与项目管理体系的建立和完善;

2.在项目开发过程中,能够提供必要的培训,例如精益创业,用户研究,产品规划,面向对象设计、持续集成、需求拆分等;

3.对产品团队进行日常操作辅导,帮助产品经理识别问题和风险,在软件交付和质量保证方面,进行持续改进;

4.进入团队进行产品管理相关的度量,定期完成分析报告,向上级领导汇报,支持事业部和公司的管理与决策;

5.协调各部门之间的工作,负责项目资源的协调和有效使用,以达到项目进度目标;

6.作为内部咨询师进入产品团队,引入敏捷开发实践或产品工程实践,结合产品与团队特点,制定有针对性的效率提升方案;

7.对产品经理和团队进行培训,提高其能力和技巧。
传统互联网(是的,互联网已经可以用传统来称呼了)发展到一定阶段,新技术在涌现。

云计算、AI、区块链是最近3年街头巷尾都能听到的名词。

严格来说这三者并不是技术,而是新的技术应用形式。因为都是最近几年成为热点的,所以放在一起来总结。



!!云计算常见岗位


!!![[云计算领域]]技能图谱


*	[[云架构师]]
*	[[JAVA专家]]
*	[[算法工程师]]
*	[[前端工程师]]

!!AI常见岗位

 !!![[人工智能领域]]技能图谱

*	[[AI专家]]
*	[[AI工程师]]
*	[[深度学习工程师]]
*	[[机器学习工程师]]及[[机器学习技能图谱]]
*	[[机器学习算法工程师]]
*	[[大数据架构师]]

!!区块链常见岗位

!!![[区块链行业图谱|https://xy185.github.io/tech/blockchain/blockchainguidebook20181215.html]]
(区块链行业图谱在另一个文件上,打开较慢,建议浏览器打开)

*	[[区块链开发工程师]]
*	[[区块链架构师]]
*	[[数字钱包开发]]
*	[[区块链平台开发]](BaaS)
	
[img[AndroidArchitect-by-StuQ.png]]

[img[Angular2-by-StuQ.png]]

[img[Architect-by-StuQ.png]]

[img[BigData-by-StuQ.png]]

[img[CloudComputing-by-StuQ.png]]

[img[Container-by-StuQ.png]]

[img[CTO-by-StuQ.png]]

[img[DBA-by-StuQ.png]]

[img[EmbeddedEngineer-by-StuQ.png]]

[img[FrontEnd-by-StuQ.png]]

[img[Hadoop-by-StuQ.png]]

[img[HTML5-by-StuQ.png]]

[img[IntelligentDevOps-by-StuQ.png]]

[img[iOSDev-by-StuQ.png]]

[img[Kubernetes-by-StuQ.png]]

[img[MachineLearning-by-StuQ.png]]

[img[MicroService-by-StuQ.png]]

[img[MobileOptimization-by-StuQ.png]]

[img[MobileTesting-by-StuQ.png]]

[img[OpenResty-by-StuQ.png]]

[img[ProgrammingLanguage-by-StuQ.png]]

[img[Security-by-StuQ.png]]
因为通讯、金融、政务、企业等各行业及互联网上存储着大量信息,一旦泄密就会产生不可估量的损失,因此信息安全是一直以来互联网公司非常看重的一个领域。

信息安全常见的分类如下:

网络安全(企业内部)、Web安全(互联网)、云安全,其他还有手机安全、电脑安全、服务器安全、数据安全等。

其中网络安全主要围绕防火墙/NGFW/UTM、网闸、入侵检测/防御、VPN网关(IPsec/SSL)、抗DDOS、上网行为管理、负载均衡/应用交付、流量分析、漏洞扫描等。

Web安全更为公众熟知,也一直在升级换代。



!!![[安全技能图谱]]

!!信息安全常见岗位:


*研发类:[[安全研发]]、安全攻防研究、逆向分析

*工程类:[[安全开发工程师]]、[[安全架构师]]、[[安全运维工程师]]、安全服务工程师、安全技术支持、安全售后、Web渗透测试工程师、[[Web安全工程师]]、[[应用安全审计]]、移动安全工程师

*销售类:安全销售工程师、安全售前工程师、技术解决方案工程师
*管理类:[[信息安全经理]]、[[信息安全总监]]、[[首席安全官]](CSO)

工作职责:

1. 构建公司信息安全管理体系,包括信息安全制度、流程、策略,制定信息安全相关技术和管理规范;

2. 对公司当前网络通讯、信息系统、业务管理进行安全评估,出具评估报告,对安全风险提出解决建议;

3. 对应用系统上线前实施安全测试、风险评估和安全加固,以及各种入侵、渗透的防范;

4. 密切关注各类安全问题和系统漏洞,发现安全隐患及时给出处理建议,并对新技术领域进行安全评估;

5. 响应信息安全事件,负责入侵审计、日志分析、取证、协助数据恢复等;

6. 根据审计要求,定期进行系统和应用进行安全审计,并提交安全测评报告。 

任职资格:
1.大学本科及以上学历,计算机相关专业;

2.信息安全领域5年及以上工作经验,有互联网、金融行业从业背景优先 

3.熟悉国家及金融信息系统安全等级保护的相关法规、标准及政策,熟悉国内外常见的安全标准等;

4. 熟练掌握信息安全检测、漏洞探测、网络渗透、安全加密、操作系统及数据库等安全技术、安全检测与防护经验;

5. 熟悉信息安全架构和实施经验,熟悉各领域主流信息安全产品和解决方案;

6. 熟悉风险评估、等级保护、安全体系规划、安全集成等实施验和项目管理;

7. 有高度的责任心和沟通能力,工作细致耐心、积极主动,抗压性强,有团队合作精神。
职位描述:
岗位要求:

1.跟踪和研究国内互联网安全最新政策、法规和技术发展动态,对其趋势和政策走向进行前瞻性调研,前瞻性地预测、预警、预判中长期大势大局,对可能出现的危机及预期影响进行先导性分析,并及时给出破解的思路与办法; 

2. 组织完成公司信息安全架构、信息安全规范和流程的制定;在公司内及云服务内推广信息安全架构、规范和流程并监督各部门执行; 

3. 组织云系统的安全方案的设计和评审; 

4. 对系统所发生的重大安全事故,制定解决方案并组织修复; 

5. 组织漏洞发掘-模拟渗透-模拟攻防;对于发现的漏洞监督修复; 

6. 组织对重要系统进行安全审计,对于不合格的系统监督整改; 

7. 负责安全部门的日常管理。

任职要求: 

1.全日制硕士研究生以上学历,6年以上相关工作经验;

2.熟悉云服务运作模式,具备独立研究能力,在行业领域有专家资源积累,在泛安全研究领域有较强的业界影响力;

3.对信息产业、互联网行业发展趋势及问题有良好认知;

4.熟悉政府部门运作,熟悉互联网产品及相关行业,了解国家相关安全政策;

5.为人严谨细致,学习能力强,具备优秀的逻辑分析和文字撰写能力,优秀的人际交往能力和独立工作的抗压能力。
岗位描述:

 1. 负责产品需求分析、制定性能测试方案、性能测试目标和性能测试策略;

2. 搭建、维护性能测试环境;

3. 设计测试场景,以及编写、执行、维护测试脚本;

4. 执行压力测试,监控系统指标,包括应用指标,以及服务器和数据库的资源指标;

5. 分析、定位瓶颈,推动问题解决,协助开发进行性能调优工作;

6. 出具完备的性能评估报告,对产品,流程提出持续性改进意见;

7. 制定性能测试规范、研究新的测试方法,培训团队成员并指导相关性能测试工作。

 

岗位职责:

1、五年以上测试相关经验,其中三年以上大型项目性能测试经验

2、能独立的完成性能测试项目,有互联网金融行业相关经验优先

3、熟悉性能测试的概念、整体流程、方法论,具备性能测试需求分析和设计能力;至少会使用2种以上性能测试工具,如Loadrunner,Jmeter 等;

4、能够独立编写sql、数据库脚本,并分析优化数据库脚本,熟悉常用的数据调优工具和常用的counter;

5、熟悉至少1个常用的数据库产品,个操作系统的原理、一个web server 产品、应用服务器产品、一个应用服务器产品;

6、至少熟悉TCP/IP协议,熟悉HTTP协议,至少见过并了解三层、四层交换或者路由器的使用和配置;了解常用的与网络性能相关的counter.

!!! 机会

* [[实习 - 微软亚洲研究院“明日之星”开放岗位|http://mp.weixin.qq.com/s?__biz=MzA4NzIyMDY0OA==&mid=2655391644&idx=1&sn=e3c63a2838439ab990fb0372fe665d69&chksm=8b8e675bbcf9ee4ddcd6e51cdca6c0c07298c3632cf388bb2932ecc1ae15273714a178e2f7ee&mpshare=1&scene=23&srcid=1102ZHSwSRuzjzvybqVqvjNG#rd]]

!!! 实验室信息

* Shu Wu 吴书 
** http://shuwu.name
** 中科院自动化研究所 智能感知与计算研究中心
* Wang Cong 王枞
** http://school.freekaoyan.com/bj/bupt/daoshi/20130811/1376182278164094.shtml
** 智能信息处理、信息安全、网络安全
* 北大可视化研究中心
** http://vis.pku.edu.cn
* 吴国仕
** http://school.freekaoyan.com/bj/bupt/daoshi/20130811/1376188859164239.shtml
** 大数据与智能信息处理

!!! 购书

* Android 系 https://sale.jd.com/act/RBGaVDt3qnjd58.html
* 人工智能与深度学习系 https://sale.jd.com/act/FUTLwVHIil71C.html

!!! 考研

* 王道论坛 - 计算机考研论坛 http://www.cskaoyan.com/forum.php

!!! 出国

* 最全CMU计算机各项目录取要求与就业统计解析—总有一款适合你 https://mp.weixin.qq.com/s/eeAHhmvA7Eyib7mfhD891Q

!!! 鸡汤

* 来不及,你就不学了吗? http://wenda.tianya.cn/jinghua/1a9bqsn7l5n80asl3r9pis84e856p152imgdt

!!! 脑洞

* 代码的深渊:2022年,一个试图用AI取代程序员的故事  https://mp.weixin.qq.com/s/M_2mygXpdRVe6Sk_bsNRPg
工作职责:

参与公司的整体运营,负责技术方案和产品的研发、项目实施和技术管理;

负责部门技术发展规划,为公司业务发展提供全面技术保障,确保技术的行业领先性;

负责制定、审核部门技术管理制度和技术规程标准;负责规划公司产品的技术构架、重难点技术攻关;

负责技术方案开发、实施的各个环节,把握整体进度和预算,控制好项目风险;

负责技术团队建设和管理,做好人员配置与协调,持续提升团队工作质量和效率;

所辖员工培养选拔、业绩考核、工作任务分配等日常管理工作;

''任职资格''

1、重点院校计算机相关专业本科及以上学历,10年以上IT工作经验;

2、具有5年以上IT团队管理经验,带领过不少于800人的团队;

3、具有战略思维和创新思维。能够不断了解技术发展的趋势,不断主动进行技术创新。

4、具有良好的沟通能力和领导能力,能统筹全局,合理调配团队资源;

5、在IT预算管理,团队考核,研发模式,项目管理等方面有丰富的实操经验

6、
移动客户端的开发类型主要是三种:

!Native App(原生APP)

也就是完全使用移动设备系统语言写的客户端,iPhone iPad就是纯Object-C,安卓就是纯JAVA, 就是用户看到的界面啦体验到的交互啦都是原生的。
性能最好的开发方式,但灵活性就没下面两种好。

!Web App,

可以在浏览器里直接打开,HTML+CSS+JS,是一个非常灵活的的网页应用,比如手机浏览器访问的淘宝。

!Hybrid App.

使用原生写了一个容器,然后使用HTML+CSS+JS来实现用户界面和交互的,是一种混合式应用。

具体开发岗位包括:

*       安卓应用开发工程师
*	安卓系统开发工程师
*	iOS开发工程师
*	APP架构师
*	手机游戏开发工程师
*	桌面应用开发工程师
*	HTML5开发/H5开发
*	移动开发经理
*	移动开发总监
移动开发岗位简单来说就是用安卓、iOS(以及WP)开发手机上的各种APP。

最近几年随着H5技术的迅猛发展,原生APP、web应用、hybird混合模式开发等多种开发方式共存。

同时,小程序盛行,负责移动开发的程序员们所需技能技能也在持续变化


 !!![[移动开发领域]]技能图谱

!!移动开发类常见岗位
	
*	[[安卓应用开发工程师]]
*	[[安卓系统开发工程师]]
*	[[iOS开发工程师]]
*	[[APP架构师]]
*	[[手机游戏开发工程师]]
*	[[桌面应用开发工程师]]
*	[[移动开发经理]]
*	[[移动开发总监]]
	
岗位职责:

1. 负责APP服务端架构、开发与迭代;

2. 带领并指导团队进行代码开发、测试,能够较准确把握开发进度、工程质量,保证产品开发迭代周期;

3. 负责系统开发过程中的重大技术难点攻关,解决实际问题;

4. 培养团队,不断提升移动团队技术水准、开发效率及业务理解和洞察力。



任职要求:

1. 本科及以上学位,5年以上互联网 / 移动互联网开发经验;

2. 优秀的软件工程和架构能力,掌握通用的设计原则与模式,善于控制工程质量;

3. 精通iOS或Android至少一个系统原则及内部机制,有独立架构百万DAU移动APP的经验和能力;

4. 熟悉主流开源框架,如Spring、SpringMVC、MyBatis、SpringBoot等,熟悉SpringCloud、Redis、Mysql等主流开源组件;

5. 抽象能力强,逻辑清晰,善于思辨与沟通;

6. 至少熟悉一门移动开发语言,熟悉多语言开发者优先。
 *[[iOS 开发技能图谱]]

 *[[AndroidApp 开发技能图谱]] 

 *[[AndroidROM 开发技能图谱]]

 *[[Android 架构师技能图谱]]
岗位职责:



1.带领技术团队完成项目及公司移动产品功能整体架构、设计、实现;

2.制定新员工培养技术并不断更新,对产品研发过程中遇到的关键性问题给出解决方案;

3.负责团队的管理协调,通过制定各种流程规范来促成团队高效的完成任务;

4.能发现团队运转过程中的问题并及时解决;

5.按照开发计划分配开发任务、协调开发人员;

6.完善开发团队的绩效考核指标,帮助团队成员完成考核指标。





 任职要求:



1.大学本科及以上学历,3年以上移动产品研发经验,2年以上团队管理经验,计算机科学与技术或相关专业优先;

2.具有很强的沟通协调能力及文档编写能力;

3.逻辑思维能力强,熟悉主流移动开发平台,iOS或者Android开发语言至少精通一门;

4.对移动产品研发流程有深刻理解,熟悉研发流程中各个环节的工作内容及工作职责;

5.有过敏捷开发管理经验,具备快速推进项目流程的能力;

6.热爱互联网,尤其是移动互联网。

! 移动无线测试技能图谱

!! 常用IDE
*Android
**ADT
**Android Studio
*iOS
**Xcode
*Common
**Atom
**Sublime Text
**Vim
**Visual Studio Code	

!! 基础知识
*Android
**掌握Android开发基础技能	 
*iOS
**掌握iOS开发基础技能
*Web
**掌握Web开发基础技能
*api
**掌握api相关基础知识
*测试
**掌握基本的测试用例设计方法和思想
		
!! 常见应用模式
*Native
*Hybrid
*H5 App
*ReactNative 

!! 常用工具
*Android
**Android sdk manager
**adb
**ddms
**ant
**aapt
**emulator
**Genymotion
**hierarchyviewer
**monitor
**monkey
**monkeyrunner
**uiautomatorviewer
*iOS
**lldb
**iExplorer
**libimobiledevice 套件
**codesign
**instruments
**xcodebuild
**atos
**xcrun

!! 常用UI Automation框架
*Android
**Instrumentation
**Athrun
**Robotium
**Monkey
**Monkeyrunner
**uiautomator
**Selendroid
**Calabash*Android
**monkeytalk
**Appium
**Espresso
**cafe
*iOS
**UIAutomation(旧)
**XCUITesting
**KIF
**Frank
**Appium
**ios-driver
**Mechanic.js
**monkeytalk
**Calabash*iOS
**TuneupJs
**ynm3k
*Appium
*Macaca


!! 常用单元测试框架
*Android
**robolectric
**Instrumentation
**Mockito
**RxJava
*iOS
**OCUnit
**GHUnit
**XCTest 
**OCMock
**OCMockito
**Expecta
**OCHamcrest

!! 常用动态更新
*ReactNative
*waxpatch/wax
*ota
		 
!! 常用性能工具

!!! 抓包
*Charles
*fiddler
*burpsuites
*tcpdump
*anyproxy

!!! 弱网模拟
*iOS developer mode
*ATC
*Charles

!!! memory
*Android
**MAT
**ddms
**Memory Monitor
**Allocation Tracker
**LeakCanary
**dumpsys
**procrank
**top
*iOS
**Memory Leaks

!!! Scan
*Android
**findbugs
**lint
**infer
**CheckStyle
**PMD
*iOS
**scan*build
**oclint
**infer
**deployment

!!! other
*Common
**安捷伦
**tcpdump
**wireshark
**高速(慢速)摄像机
**埋点
**腾讯GT
**网易Emmagee
*Android
**gfxinfo
**dumpsys
**traceview
**systrace
**GameBench
**battery*historian
*iOS
**Core Animation(instruments)
**Network(instruments)
**TimeProfiler(instruments)
**Zombies(instruments)

!! 安全
*Android
**Drozer
**apktool
**dex2jar
**proguard
**加固
**exported/permission
**AndBug
**androguard
**Xposed
		
*iOS
**IDB
**iRET
**DVIA
**LibiMobileDevice
**otool
	
!! 覆盖率
*Android
    *Jacoco
    *EMMA
*iOS
    *gcov

!! 动态更新
*Android
    *Dexposed(二次开发之后)
    *Robust
    *android-frontia
    *Nuwa
    *HotFix
    *RocooFix
    *DroidFix
    *AndFix 
*iOS
    *JSPatch
    *WaxPatch
*ota
*ReactNative
*weex					
			
!! abtest
*AB Tester
*AppAdhocOptimizer
*Google Website Optimizer
*Visual Website Optimizer
	
!! 常用灰度测试工具
*testflight
*蒲公英
*fir
*pre

!! 常用云测平台
*testin
*MQC
*MTC

!! 常用持续集成平台/相关工具
*Jenkins
*Travis CI 
*Android
**mvn
**gradle
*iOS
**xctool
**Cocoapods
	 
		
!! 多语言开发应用
*SL4A
*gomobile
			

!! 多设备远程管理平台
*STF

!! 自动遍历工具
*AppCrawle

!! 软技能
*知识管理/总结分享
*沟通技巧/团队协作
*需求管理/PM
*交互设计/可用性/可访问性知识
*快速的学习能力
! 移动优化经验

! 网络加载

!! 优化请求

*优化请求包大小

**代码压缩
	
**Gzip压缩
	
**不同网络(2G/3G/4G/wifi)图片尺寸
	
**合理减少Header字段/cookie
	
**MTU策略(1500字节)
	
**首屏加载时间控制

***3s完成(5s为用户最大容忍度)
		
***网络平均速度(2.71Mb/s = 0.33875MBps(1Mbps=8MBps) = 346.88KBps)
		
***不超过1041KB,经验值200K(考虑打开响应、网络连接至少600ms)

*减少请求次数(仅针对HTTP)

**合并js、css文件、雪碧图

***移动端雪碧图(构建)
		
***combo

**避免重定向(一次重定向至少600ms)
	
**避免重复资源请求
	
**同时并行请求数量(android:4个,ios 5以后可支持6个)

*解耦请求依赖

**文件并行加载/依赖执行(构建+模块化)
	
**首屏CGI提前(组件)
	
**inline首页必备js/css
	
**异步加载非首屏

*连接优化

**支持keep-alive
	
**网络时间

***DNS(2G:3.85785;3G:1.60643;WIFI:0.986921;unknown:1.67838)
		
***TCP(2G:2.33482;3G:0.743109;WIFI:0.550208;unknown:1.20898)
		
***RTT(2G:2.57478;3G:0.608047;WIFI:0.444332;unknown:1.30601)
***Tran(2G:14.0374;3G:60.1967;WIFI:70.8728;unknown:36.3655)
**DNS Prefetch
**HTTP2/SPDY
**TCP握手/TLS密钥协商

!! 缓存策略

*Cache

**Browser Cache(一年)
	
**AppCache(选择)
	
**离线包(native下必须)

*Web Storage

**localStorage
	
**sessionStorage
	
**nativeStorage(native,>=4.6,大数据)

*Cookie

*Web DB

**indexedDB(推荐)
	
**Web SQL

*合理缓存CGI数据(local/ajax)

!! 加载策略

*首屏加载

**Server Render(React-Node)

*按需加载(组件化)

*lazyload(图片、组件)

**延迟加载图片
	
**滚动加载图片

*Media Query

! 监控上报

!! H5监控体系

*成功/失败率

**图片
	
**CDN文件
	
**CGI
	
**直播/录播播放

***加载
		
***断流

*测速(2G/3G/4G/wifi、组件)

**首屏展示速度(首屏渲染)
	
**CGI测速
	
**CDN文件测速
	
**图片测速
	
**直播/录播播放

***加载
		
***断流

*版本覆盖

**离线包更新率

***tdw:版本号、用户、环境等

**离线包覆盖率

***monitor

*错误日志

**badjs
	
**tryjs

*performance

**timing(ios 8不支持)
	
**resouce timing(缓存/非缓存,手机暂不支持)

!! 视频监控体系

*直播播放

**视频加载流程监控(playing/paulse/timeupdate)

***平均延时
		
***失败率

**卡顿缓冲监控(timeupdate)

***卡顿缓冲时长
		
***卡顿缓冲次数(短流率)

**视频异常监控(onerror)

***源文件不存在
		
***取回过程被用户中止
		
***下载时错误
		
***解码时错误
		
***不支持的音视频
		
***其他cgi请求异常引起的错误等

*录播

**视频加载流程监控(playing/paulse/timeupdate)

***平均延时
		
***失败率

**卡顿缓冲监控(timeupdate)

***卡顿缓冲时长
		
***卡顿缓冲次数(短流率)

**视频异常监控(onerror)

***源文件不存在
		
***取回过程被用户中止
		
***下载时错误
		
***解码时错误
		
***不支持的音视频
		
***其他cgi请求异常引起的错误等

**单位录播时长等待监控

***录播播放时长
		
***下载等待时长

! SEO

*keywords/description

*合理减少pages数量

*减少图片/flash/弹窗

*外链权重不高

*canonical/alternate

*提交sitemap

! 渲染优化

!! HTML

*HTML meta viewport(可以加速页面渲染)

*优化DOM tree

**减少html标签,避免不必要的嵌套
	
**避免table
	
**减少DOM深度

*减少DOM渲染

**VirtualDOM(React)
	
**React-Native

!! 动画

*合理使用requestAnimationFrame

*尽量使用css3

*合理使用Canvas代替多DOM tree(5个) css3

*高频事件(touchmove、scroll) lazy化(debounce.js)

*GUP渲染

**大量的渲染(Canvas、WebGL、Video)
	
**3D Transformed(transitions、3D transforms)
	
**Animated css属性(filters, masks, blend modes, reflections, opacity)
	
**position: fixed
	
**content overlapping existing GPU-rendered bitmaps

!! repaint/reflow

*避免重新设置图片大小

*避免频繁的触发repaint/reflow

! 文件优化

!! css样式

*避免style标签

*去掉expression

**移除空的(多余的)选择器

*合理使用Float

*合理使用iconfont

*值为0的属性不带单位(兼容性、压缩自动处理)

*标准化浏览器前缀(构建)

*减少font-size的申明(增加浏览器渲染计算)

*异步css文件换成js文件(构建)

!! js脚本

*框架组件选择(zepto/react/vue/angular)

*使用documentFragment(zepto已解决)

*事件优化

**事件代理
	
**频繁事件优化
	
**touchsatrt、touchend(tap)代替click

*使用mqqapi(http://mqq.oa.com/)

*id选择器

*合理缓存对象(DOM、js对象、length)

*慎用with

*避免eval、Function

*使用Join

!! 图片文件

*图片大小

**压缩工具

***优图(tu.oa.com)
		
***智图(zhitu.tencent.com)
		
***grunt插件

**图片格式

***webP
		
***sharpP

*减少图片使用

**css画图
	
**svg画图
	
**合理iconfont代替图片(最后的选择)
	
**避免使用bmp图片

*srcset + sizes(兼容性)

*图片格式(webp > jpg > png(png8 > png24) > gif)

*图片大小限制(10K,不超过30K)

*图片尺寸限制






!!岗位描述1

职位描述

负责音频技术开发,算法实现及优化;

音频前后处理算法调优包括噪声抑制,回拨抵消,自动增益,语音增强等;

参与音视频相关算法的前沿技术开发和预研;

职位要求

信号处理,通信,电子工程等相关专业硕士以上学历; 

扎实的数学基础,熟悉数字信号处理,具备算法设计能力,熟悉一下

算法中的至少一种:

* -语音处理包括噪声抑制,回拨抵消,自动增益,语音增强等
* -音频编解码,如ilbc/silk/mp3/aac/amr等
* -音频网络传输,包括FEC策略,语音同步缓冲,丢包补帧处理等
* -音频后处理,包括变声,回声,EQ, 3D等

熟悉C/C++定点算法开发优化,熟悉MATLAB工具使用; 

有手机平台开发经验者优先。


!!岗位描述2

职位描述:

1. 参与音视频会议系统的架构设计和开发;

2. 基于WebRTC框架等实时音视频技术,进行音视频引擎的设计、开发和性能调优;

3. 结合产品需求,在硬件平台上进行音视频能力的开发和调优;

4.  负责音视频编解码、传输等算法的技术调研和方案落地,包括但不限于AGC/AEC/NS/VAD、自适应码率、QoS算法等。

职位要求:

1. 精通多媒体开源架构(如FFMPEG、WebRTC等);

2. 有音视频引擎的实际开发经验,掌握采集渲染、音视频处理、编解
码、QoS等;

3. 精通TCP/UDP/IP,对STUN/TURN等穿透技术有深刻理解;

4. 熟悉常见音视频编解码技术,如H.264、H.265、VP8等,熟悉rtp、rtmp、rtsp等传输协议;

5. 有语音相关优化经验者优先。


职位描述:
岗位职责:

1.语音识别相关模块核心算法的研发和实现;

2.语音识别系统的数据处理、模型训练、结果分析、实验验证

3.基于海量数据的模型训练、词汇量连续语音识别系统的开发



任职资格:

1、 学历要求硕士及以上,2年及以上工作经验

2、 能够独立从事语音识别算法的研究和语音识别引擎的开发移植工作

3、 有深度学习研发经历,熟悉相关开源工具,有大规模语音系统训练经验优先

4、 有算法研究背景经验,对语音识别有较深入理解, 熟悉相关算法,在信号处理、声学建模、语言建模、深度学习等领域有较深入研究

5、 熟练掌握Python/C++等语言,熟悉tensorflow,kaldi等工具,能够无障碍阅读英文论文

! 程序员技能图谱

Github 开源项目地址:[[https://github.com/TeamStuQ/skill-map|https://github.com/TeamStuQ/skill-map]],欢迎 Star : )。

!! 简介

程序员技能图谱是由极客邦科技 [[Geekbang|https://www.geekbang.org/]]发起的一个技术社区开源项目,志在汇集、整理、共建泛 IT 技术领域(人工智能,前端开发,移动开发,云计算,大数据,架构,运维,安全,后端开发,测试,智能硬件等)及互联网产品、运营等领域学习技能图谱,帮助程序员梳理知识框架结构,并尝试提供路径指导和精华资源,方便技术人学习成长。

除非特别声明,本开源项目所有领域技能图谱内容均只代表所参与贡献的技术人员个人立场,与其公司背景无关。

本项目出发点旨在抛砖引玉,有任何不同意见和反馈,请提交 [[Issue|https://github.com/TeamStuQ/skill-map/issues]] 讨论,或发送邮件至 [[Raymond@geekbang.org|mailto:Raymond@geekbang.org]],编辑会及时跟进或组织讨论,并持续更新内容版本。请理解并支持,感谢!: )

目前技能图谱已有如下领域,点击标题可以预览文本文件可以在[[图片预览版|https://github.com/TeamStuQ/skill-map/blob/master/data/Preview-source-skillmap-PNG.md]]以技能树形式预览图片文件:




!具体领域
---

 !人工智能 AI  

 !![[机器学习|https://github.com/TeamStuQ/skill-map/blob/master/data/map-MachineLearning.md ]]   

[[@徐英凯|https://github.com/kevinhsu ]]  闪银机器学习工程师 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/26]] 
[[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-MachineLearning-by-StuQ.png ]]  

 !! [[Apollo 自动驾驶|https://github.com/TeamStuQ/skill-map/blob/master/data/map-Apollo.md ]]  

 [[@Apollo 技术布道师团队|http://apollo.auto/index_cn.html ]] 
 [[原创链接|https://github.com/ApolloAuto/apollo ]]  


[[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-Apollo.png ]]  

 ! [[ 大数据|https://github.com/TeamStuQ/skill-map/blob/master/data/map-BigDataEngineer.md ]]   

[[@祝海林|https://github.com/allwefantasy ]]  丁香园大数据技术专家 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/12]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-BigData-by-StuQ.png ]]  

  @高扬 欢聚时代资深大数据技术专家 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/12]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-BigData-by-StuQ.png ]]  

 !![[Hadoop|https://github.com/TeamStuQ/skill-map/blob/master/data/map-Hadoop.md ]]  

 [[@张丹|http://blog.fens.me ]]  况客创始人 [[原创链接|http://blog.fens.me/series-hadoop-family/ ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/22]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-Hadoop-by-StuQ.png ]]  

 ! [[Web 前端|https://github.com/TeamStuQ/skill-map/blob/master/data/map-FrontEndEngineer.md ]]   
[[@jayli(拔赤)|https://github.com/jayli/ ]]  阿里巴巴前端技术专家

 [[原创链接|https://github.com/jayli/jayli.github.com/issues/16 ]]   

[[推荐|https://github.com/TeamStuQ/skill-map/issues/9]] 

[[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-FrontEnd-by-StuQ.png ]]   

 [[@Jackson Tian|https://github.com/JacksonTian ]]  阿里巴巴前端技术专家 [[原创链接|https://github.com/JacksonTian/fks ]]  
 [[推荐|https://github.com/TeamStuQ/skill-map/issues/9]]
 [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-FrontEnd-by-StuQ.png ]]   

 !! [[移动性能优化|https://github.com/TeamStuQ/skill-map/blob/master/data/map-MobilePerformanceOptimization.md ]]  

 [[@刘恒兵(河伯)|https://github.com/herbertliu ]]  腾讯前端技术专家、IvWeb 负责人 [[原创链接|https://github.com/herbertliu/OMS ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/9]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-MobileOptimization-by-StuQ.png ]]   

!! [[HTML5 开发|https://github.com/TeamStuQ/skill-map/blob/master/data/map-HTML5.md ]]   
[[@Phodal(黄峰达)|https://github.com/Phodal ]]  ThoughtWorks 咨询师 
[[推荐|https://github.com/TeamStuQ/skill-map/issues/76]] 
[[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-HTML5-by-StuQ.png ]]   

!! [[Angular 2|https://github.com/TeamStuQ/skill-map/blob/master/data/map-AngularJS2.md ]]  

 [[@汤桂川|https://github.com/lightningtgc ]]  广发证券前端技术专家 - 
[[推荐|https://github.com/TeamStuQ/skill-map/issues/9]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-Angular2-by-StuQ.png ]]  

 !Server 后端   

!! [[架构师|https://github.com/TeamStuQ/skill-map/blob/master/data/map-Architect.md ]]  
 @沈剑58到家技术委员会主席/技术总监 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/53]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-Architect-by-StuQ.png ]]  

!! [[OpenResty|https://github.com/TeamStuQ/skill-map/blob/master/data/map-OpenResty.md ]]   

[[@温铭|https://github.com/moonbingbing ]]  OpenResty Inc. 合伙人 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/29]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-OpenResty-by-StuQ.png ]]  

 !![[直播技术|https://github.com/TeamStuQ/skill-map/blob/master/data/map-LiveTelecast.md ]]  

 [[@李雨来|https://github.com/blacktear23 ]]  SpeedyCloud 迅达云技术 VP - [[推荐|https://github.com/TeamStuQ/skill-map/issues/55]] 

!! [[CDN 技术|https://github.com/TeamStuQ/skill-map/blob/master/data/map-CDN.md ]] 

  [[@李孟|https://github.com/x8s ]]  SpeedyCloud 迅达云首席架构师 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/72]]  

!! [[DNS 排查|https://github.com/TeamStuQ/skill-map/blob/master/data/map-dns-troubleshoot.md ]]   

[[@李孟|https://github.com/x8s ]]  SpeedyCloud 迅达云首席架构师 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/72]] 

 ![[云计算|https://github.com/TeamStuQ/skill-map/blob/master/data/map-CloudComputing.md ]]  

 @费良宏AWS 首席云计算技术顾问 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/11]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-CloudComputing-by-StuQ.png ]]  

!! OpenStack 

@夏艳UnitedStack 公共关系总监 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/19 ]]  

!![[容器 Container|https://github.com/TeamStuQ/skill-map/blob/master/data/map-Container.md ]]  

 [[@林帆|https://github.com/linfan ]]  ThoughtWorks DevOps 咨询师 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/20]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-Container-by-StuQ.png ]]  

!![[微服务 MicroService|https://github.com/TeamStuQ/skill-map/blob/master/data/map-Microservice.md ]]  

 [[@王磊|https://github.com/wldandan ]]  西安尚度元科技技术总监 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/23]]
 [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-MicroService-by-StuQ.png ]]  

! [[安全|https://github.com/TeamStuQ/skill-map/blob/master/data/map-SecurityEngineer.md ]] 

  [[@余弦|https://github.com/evilcos ]]   知道创宇技术 VP [[原创链接|http://blog.knownsec.com/Knownsec_RD_Checklist/v3.0.html ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/13]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-Security-by-StuQ.png ]]  

 ![[智能运维|https://github.com/TeamStuQ/skill-map/blob/master/data/map-IntelligentDevOps.md ]]   

[[@Tanky Woo|https://github.com/tankywoo ]]  知道创宇资深运维工程师 [[原创链接|http://blog.knownsec.com/2015/03/how-many-basic-skills-should-a-operation-and-maintenance-engineer-get/ ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/10]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-IntelligentDevOps-by-StuQ.png ]]  

!! [[DBA|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DBA.md ]]  

 [[@杨一]]  杭州有赞科技有限公司 DBA 专家 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/77]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-DBA-by-StuQ.png ]]  

!![[DevOps|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DevOps.md ]]  

 [[@林帆|https://github.com/linfan ]]  ThoughtWorks DevOps 咨询师 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/107]] [[脑图|https://github.com/TeamStuQ/skill-map/blob/master/data/designbyStuQ/png-DevOps-by-StuQ.png ]]  

!! [[Kubernetes|https://github.com/TeamStuQ/skill-map/blob/master/data/map-Kubernetes.md ]]  

 [[@张磊|https://github.com/resouer ]]  Hyper HQ & CNCF Meber - [[推荐|https://github.com/TeamStuQ/skill-map/issues/10]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-Kubernetes-by-StuQ.png ]]  

  [[@李响|https://github.com/xiang90 ]]  CoreOS 分布式系统组主管 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/10]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-Kubernetes-by-StuQ.png ]]  

 ![[ 测试|https://github.com/TeamStuQ/skill-map/blob/master/data/map-testing.md ]]  

 [[@TesterHome 社区|https://testerhome.com/ ]]   - [[推荐|https://github.com/TeamStuQ/skill-map/issues/15 ]]   

!! [[移动无线测试|https://github.com/TeamStuQ/skill-map/blob/master/data/map-MobileWirelessTesting.md ]]   

[[@陈晔 Monkey|https://github.com/monkeytest15 ]]   - [[推荐|https://github.com/TeamStuQ/skill-map/issues/15]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-MobileTesting-by-StuQ.png ]]  

 !移动开发   

!! [[iOS 开发|https://github.com/TeamStuQ/skill-map/blob/master/data/map-MobileDev-iOSDev.md ]]  

 [[@唐巧|https://github.com/tangqiaoboy ]]   猿题库小猿搜题产品技术负责人 [[原创链接|https://gist.github.com/tangqiaoboy/5fadd9ba398277680b87 ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/14]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-iOSDev-by-StuQ.png ]]  

!! [[Android App 开发|https://github.com/TeamStuQ/skill-map/blob/master/data/map-MobileDev-AndroidDev.md ]]   

[[@anly_jun|https://github.com/mingjunli ]]   [[原创链接|http://www.jianshu.com/p/39c63eff3c36 ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/85 ]]  

!! [[Android ROM 开发|https://github.com/TeamStuQ/skill-map/blob/master/data/map-MobileDev-AndroidROMDev.md ]]   

[[@anly_jun|https://github.com/mingjunli ]]    [[原创链接|http://www.jianshu.com/p/0a4a33e63338 ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/85 ]]  

!! [[Android 架构师|https://github.com/TeamStuQ/skill-map/blob/master/data/map-MobileDev-AndroidArchitect.md ]]  

 [[@顾浩鑫(ASCE1885)|https://github.com/ASCE1885 ]]   平安金融科技移动研发工程师  - [[推荐|https://github.com/TeamStuQ/skill-map/issues/85]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-AndroidArchitect-by-StuQ.png ]]  

 !智能硬件    

!! [[嵌入式开发|https://github.com/TeamStuQ/skill-map/blob/master/data/map-EmbeddedEngineer.md ]]   

[[@Phodal(黄峰达)|https://github.com/phodal ]]   ThoughtWorks 咨询师 [[原创链接|https://github.com/phodal/eks ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/21]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-EmbeddedEngineer-by-StuQ.png ]]  

! [[ 开发语言|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DevLang-Total.md ]]  

 [[@吴坚|https://github.com/jamsonwoo ]]    南航软件工程师 [[原创链接|https://github.com/jamsonwoo/StuQ_skill-map ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/18]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-ProgrammingLanguage-by-StuQ.png ]]  

!! [[Golang|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DevLang-Golang.md ]]  

 [[@谢孟军|https://github.com/astaxie ]]   Apple 资深技术专家 [[原创链接|https://github.com/astaxie/build-web-application-with-golang ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/17 ]]  

!! [[Clojure|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DevLang-Clojure.md ]]   

[[@Loretta|https://github.com/lorettahe ]]   SwiftKey 软件工程师 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/25 ]]  

!! [[Python|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DevLang-Python.md ]]   

[[@ZoomQuiet(大妈)|https://github.com/ZoomQuiet ]]   猎豹移动技术专家 [[原创链接|http://wiki.zoomquiet.io/pythonic/Path2Pythoneer ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/30 ]]  

!! [[Haskell|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DevLang-Haskell.md ]]  

 [[@张淞|https://github.com/HaskellZhangSong ]]   网易杭州研究院高级开发工程师 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/36 ]]  

!! [[Node.js|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DevLang-Nodejs.md ]]  

 [[@桑世龙(i5ting)|https://github.com/i5ting ]]   去哪儿网前端架构师 [原创链接|https://github.com/nodeonly/stack ]]   [[推荐|https://github.com/TeamStuQ/skill-map/issues/35 ]]  

!! [[Ruby|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DevLang-Ruby.md ]]   

[[@张汉东(Alex)|https://github.com/ZhangHanDong ]]    - [[推荐|https://github.com/TeamStuQ/skill-map/issues/40 ]]  

!! [[Java|https://github.com/TeamStuQ/skill-map/blob/master/data/map-DevLang-Java.md ]]   

[[@Zhang Wei|https://github.com/zhangwei217245 ]]   - [[推荐|https://github.com/TeamStuQ/skill-map/issues/43 ]]  

!开发工具     

!! [[Git|https://github.com/TeamStuQ/skill-map/blob/master/data/map-Git.md ]] 

  [[@吴坚|https://github.com/jamsonwoo ]]    南航软件工程师 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/48 ]]  

!技术管理     

 [[CTO 技能|https://github.com/TeamStuQ/skill-map/blob/master/data/map-CTO.md ]] 

  @黄勇特赞科技 CTO、EGO 会员 - [[推荐|https://github.com/TeamStuQ/skill-map/issues/103]] [[脑图|https://github.com/TeamStuQ/skill-map/tree/master/data/designbyStuQ/png-CTO-by-StuQ.png ]]  






!!''以及正在建设中的领域'':

* 服务端开发

* 分布式数据库开发

* IoT 物联网

* PHP 语言

* Swift 语言

* Objective-C 语言

* C++ 语言

* C# 语言

欢迎贡献新领域技能图谱,或推荐学习路径与资源,有任何改进意见和建议,也可以建立 issue 讨论或发送邮件至 Raymond@geekbang.org。所有参与该项目的社区朋友均有机会获赠礼品/技能图谱纸质印刷 A1 版。

!! 改进目标

1. 继续细化各领域的技能节点

2. 提供各领域的参考学习路径

3. 推荐各知识点相关优质资源

!! 加入我们

* 提交图谱:直接提交 Pull Request,或者联系项目负责人雷蒙德,可发邮件至 Raymond@geekbang.org

* QQ群讨论:254521819,加群时请备注“姓名+职业角色”,如“Ray+前端”

* 微信群讨论:请加StuQ小助手(StuQxiaozhushou)并备注“技能图谱”,小助手会邀请您入群

!! 版本信息

!!! V 1.0

* 更新稳定版本,新增 IT 职业技术重要领域

!!! v 0.2.0

* IT 技术各主要领域基本覆盖

!!! v 0.1.2

* 云计算领域新增:OpenStack,容器技术

* 移动开发领域新增:iOS 开发

* 测试领域新增:移动无线测试

* 智能硬件领域新增:嵌入式开发

!!! v 0.1.1

* 程序员技能图谱第一版发布

!! 版权声明

本技能图谱遵循 [[CC-BY-NC-SA 4.0|https://creativecommons.org/licenses/by-nc-sa/4.0/]] 协议。商业转载必须征求极客邦科技 Geekbang 授权同意,转载请务必注明[[出处|http://www.stuq.org/subject/skill-map/]]。 极客邦科技 Geekbang 保留最终解释权及法律追究权力。

欢迎关注极客邦科技 Geekbang 推出的「极客时间」App,获取更多技术干货。

[img[GeekTime-QRCode-200X200.png]]

!! 特别鸣谢

「程序员技能图谱」开源项目能有精美的展示图片,背后是设计同学在百忙之中配合内容编辑不厌其烦的设计、更新和修正,在此特别鸣谢以下设计同学的贡献(排名不分先后):

陈接(Jack)、杨旸(Tammy)、谢汝冰(Ice)、王慧娟(Amy)、王硕映(Ray)、张卓(Leslie)。


!! 赞助声明

程序员技能图谱项目接受企业或者个人赞助,赞助经费主要用于覆盖图谱编辑、设计、印刷和运营成本。

赞助合作请发邮件至 Raymond@geekbang.org 。
! 云计算工程师技能图谱

!! 运维
!!! DevOps
*持续交付
*持续集成

!!! 部署
*蓝绿部署
*灰度发布
*金丝雀发布
*Canary 部署
*PHOENIX 部署
*AWS CloudFormation

!!! 配置
*Chef
*Puppet
*Ansible
*AWS OpsWorks

!! 开发

*流程
**Scrum
**Crystal
**FDD

*语言
**Java
**Python
**Go
**JavaScript
**PHP
**Ruby
**Clojure
**Julia

!! 架构

*分布式消息
**消息队列
***ZeroMQ
***ActiveMQ
***RabbitMQ
***AWS SQS
		
**事件/消息驱动
***AWS SWS
***AWS Lambda
***AKKA
		
**RPC
***Thrift
***Protobuf
*Microservices
*RESTFull
*CAP 理论


!! 应用
*前端应用
    *Web 应用
      *JavaScript/Ajax
      *HTML/CSS
    *桌面虚拟化
    *移动应用
    *IOT

*后端应用
    *高性能计算
    *渲染

*行业应用
    *CRM
    *ERP
    *生物科学

!! 基础架构
*计算
    *自动扩展
      *AWS Autoscaling
      *OpenStack/Hoo!

    *负载均衡
      *AWS ELB
      *HAProxy
      *Nginx

    *虚拟化
      *Hypervisor
        *Xen
        *KVM
        *Hyper-V

    *容器
      *Docker
      *CoreOS
      *UnixLXC

*网络
    *TCP/IP
    *VLANs
    *DNS/CDN
    *HTTP/HTTPS 协议

*存储
    *网络存储
      *AWS EBS
      *NFS v4
      *Ceph
      *Apache CloudStack

    *对象存储
      *AWS S3
      *OpenStack Swift

    *块存储
      *SAN
      *AWS EBS
      *RAID 概念

    *灾难恢复
    *文件系统
      *ext4
      *XFS

!! 平台
*操作系统
   *Linux
      *RedHat/CentOS
      *Ubuntu
      *Debian
      *SUSE
   *Windows Server

*数据管理
  *SQL
	    *AWS RDS
	    *MySQL
	    *PostgreSQL

  *NoSQL
	    *DynamoDB
	    *MongoDB
	    *Cassandra

  *缓存
	    *Memcached
	    *Redis
	    *AWS ElastiCache

  *检索
	    *Solr
	    *Elasticsearch
	    *AWS Elasticsearch

  *大数据
**语言、工具
***R	
***Python
***Java
***Scala
***Clojure
		
**MapReduce
***Hadoop
***HDFS
***HBase
***Hive
***Spark   

**数据流
***AWS Kinesis
***Storm

  *机器学习
***Spark ML
***scikit learn
***AWS ML

*身份认证
    *SAML
    *OpenID
    *Microsoft AD
    *AWS IAM

*管理
    *日志
      *AWS CloudTrail
      *Logstash
      *Fluentd

    *监控
      *ZABBIX
      *OBSERVIUM
      *INICGA
      *AWS CloudWatch

!! 安全
*Firewall
*DDoS
*iptables
*WAF
*IDS/IPS
*VPN

!! OpenStack
*核心功能
    *计算:NOVA
    *网络:NEUTRON
    *对象存储:SWIFT
    *块存储:CINDER
    *认证:KEYSTONE
    *镜像:GLANCE

*可选功能
    *仪表板:Horizon
    *数据库:Trove
    *大数据:Sahara
    *编排:Heat
    *监控:Ceilometer
    *消息服务:Zaqar
    *裸机配置:Ironic
    *密钥管理:Barbican
    *DNS服务:Designate
    *Governance Service:Congress
    *Shared Filesystems:Manila
    *Container Service:Magnum
    *Workflow Service:Mistral
    *Application Catalog:Murano

 *[[云计算技能图谱]]


 *[[容器Container技能图谱]] 

 *[[微服务MicroService技能图谱]]
!!云计算架构师职位描述1

岗位职责: 

1. 负责公司云平台IaaS设施的架构设计与研发,推进项目实施;

2. 制定IaaS设施的运维方案,保证IaaS设施的稳定性和高可用性;

3. 持续优化提升IaaS设施的稳定性、降低成本并提升团队技术实力。


任职资格: 

1. 熟悉C/C++,有Golang开发经验者优先;

2. 3-5年以上云平台(IaaS/PaaS)架构设计或应用开发经验,独立承担过大中型系统架构设计与实施;

3. 熟悉主流公有云平台(Ali/AWS/Huawei Cloud等);

4. 熟悉Ceph存储系统或网络虚拟化/SDN中至少一项技术,有混合云项目经验者优先;

5. 熟悉Docker、Kubernetes技术,参与过容器化改造项目者优先;

6. 对技术充满激情,积极跟踪分析业界新架构和产品,参与主流开源分布式系统者优先。

!!云计算架构师职位描述2

岗位职责:

1、负责容器平台的架构设计和解决方案。

2、负责研究PaaS相关的各种技术,深入了解网络、存储、Docker、Kubernetes、日志监控、Hadoop等技术的一种或多种。

3、和产品团队合作进行性能分析和架构优化,引入业界新技术改进云平台产品。

4、通过达闼云容器产品为公司项目和客户提供技术服务和解决方案,帮助项目和用户业务快速上云。

5、参与开源社区贡献,和全球化团队协作开发。



技能需求:

1、熟悉PaaS类技术栈,如CloudFoundry,Kubernetes,mesos,openstack等;

2、熟悉一种或多种底层技术,如网络,存储,虚拟化等;

3、熟悉Docker、Linux,有清晰的问题解决思路,能够深入调查、攻克疑难杂症;

4、精通Java、Golang、Python任意一种语言;

5、了解常用的存储、负载均衡、日志采集、监控告警等系统;

6、有产品意识,对IaaS、PaaS等系统有深入的理解,在系统演进、发展趋势、市场前景等方面,有自己的判断。


!!云平台架构师职位描述

职位描述:

工作职责:

1.负责技术部在各业务线推动落地公司云平台体系建设,如:企业级服务容器化开发和运营、微服务开发和运营,业务线应用服务支持,devops,统一日志网关监控等;

2.负责管理云平台研发团队的的日常工作,对公司业务部门能成功地运用技术平台部运营和开发的产品和服务到业务领域,对内外的满意度,技术先进性和投入产出比负责;

3.负责输出并持续更新支持公司业务发展的技术架构完整优解实践,研发流程和服务运营流程;

4.负责公司级云平台研发和实施,带领团队高效,高质量地完成设计,研发,测试和上线工作; 

5.跟踪并深入了解业内云平台,技术中台等先进的架构发展方向,深刻学习理解阿里云,aws等先进的技术方案,且要转化为实际应用方案在公司落地;

6.大力推进团队技术学习氛围的建设,提升团队整体技术的质量和效率;

7.至少是k8s平台生态链,devops生态链,微服务架构中一种或多种技术专家,能带领团队一起成长。

任职资格:

1.统招本科及以上学历,计算机、软件工程、数学等相关专业优先;

2.8年以上互联网技术相关工作经验,包括但不限于技术服务/数据服务中台开发和运营,企业级服务容器化开发运营经验、微服务开发运营经验;

3.3年以上20+人企业级技术/数据服务中台团队管理经验;

4.对企业研发管理和流程规划有实际经验和深刻理解;

5.具备优秀的团队领导能力、跨部门资源协调能力、创新能力、计划执行能力,追求极致完整优解;

6.熟悉 linux cgroups namaspace原理 熟悉k8s架构 有k8s开发经验; 精通大规模容器调度方案开发经验。
运维岗位日常工作是公司服务器日常运行、管理,包括设备检修与变更,以及机房网络布线与维护。以及在产品上线的时候,还要帮助研发人员搭建网络环境和软件运行环境。

运维的常见工作包括: 

基础环境的搭建和常用软件的安装和配置  

日常的发布和维护,测试环境和线上环境的发布和记录

数据的备份和服务的监控&安全配置。

运维工具的编写。

最近几年也有人从事Hadoop相关的大数据体系架构的运维


!!![[智能运维领域]]技能图谱

!!运维方面常见岗位:

*	[[运维工程师]]
*	[[运维开发工程师]]
*	[[自动化运维]]
*	[[运维经理]]
	
!!运维工程师岗位描述1:

职位职责: 

1、负责基础架构系统运维 

2、负责基础架构线上问题处理和值班工作 

3、开发自动化运维平台,提高运维、开发协作效率,规范操作流程; 

4 、优化各种系统,减少重复性工作 

职位要求: 

1 、经验1-3年,学历本科及以上学历,计算机相关专业; 

2 、有项目开发经验优先; 

3 、掌握常用开发语言 Shell/Python/Golang,熟悉业界主流技术,如
Nginx、Mysql、ELK等; 

4、 熟悉 Linux 操作系统,熟悉各种网络协议。 

5 、有较强的学习能力,能够熟练阅读涉及产品和技术的英文文档; 

6 、能够承受较高强度的工作压力;有强烈的工作责任心;有较好的沟通能力;有良好的团队合作精神; 

7 、具有较强的综合分析问题及解决问题的能力; 


!!运维工程师岗位描述2:

职位描述:

1、负责系统优化升级,配合研发和测试日常系统更新维护; 

2、负责相关故障排查处理,编制汇总故障报告; 

3、能在产品线中应用技术研究成果,推进运维自动化建设; 

4、对业务系统进行调优,关注和研究互联网前沿技术应用到实际工作中; 

5、快速高效完成领导交付的工作;



要求:

1.具有3年以上网站Linux运维经验; 

2.具备主流应用软件维护经验,LVS、Nginx、Tomcat、Redis、MongoDB、elasticsearch、RabbitMQ、Zabbix等; 

3.熟悉saltstack、ansible等自动化工具,具备至少3年以上自动化相关使用经验; 

4.有大型网站运维经验者优先,具备LNMP、JAVA架构等相关软件部署和优化经验; 

5.至少会使用1种服务器脚本语言,比如:shell、perl、python等; 

6.具备良好的分析故障解决能力、具备优秀的学习能力,能够阅读英文资料,对突发事件能够快速响应、判断故障并有效解决; 
职位描述: 

1、负责基于主流公有云产品的业务系统的规划、建设、维护与优化,确保业务系统的稳定性、高可用性和可扩展性;

2、负责制定相关的运维操作流程与规范,并监督执行,同时能够通过运维自动化的不断迭代,使之能够高效稳定的被执行;

3、负责对运维团队开发的devops设施进行不断迭代与优化,以此提升运维和整个大研发团队的工作效率;

4、负责运维数据的分析,找出瓶颈,评估容量,完成扩容、架构改造等工作;

5、负责运维团队日常管理,不断优化运维规范、工作流程、风险控制,应急预案等。

任职资格: 

1、5年以上的大中型网站的运维经验,2年以上运维团队管理经验;

2、精通Linux操作系统和常用组件(Nginx,Tomcat,Elasticsearch,Redis等)的部署优化,以及故障定位和处理;

3、对Docker容器技术相关的操作系统基础设施(文件系统,网络,cgroups等)有深入的理解,并熟悉k8s编排工具的使用;

4、熟练掌握Ansible等自动化配置管理工具;

5、熟练掌握open-falcon等开源监控系统的应用;

6、精通Shell脚本语言,至少掌握python/java/go中的一种编程语言,有实际的devops系统开发经验;

7、良好的沟通和语言表达能力,逻辑清晰,学习能力强,有自我激励能力,乐于承担工作压力,责任心强。
岗位职责

1.负责集团自动化运维平台、监控平台的规划、建设与开发;

2.负责运维相关的自动化工具或系统设计和方案制定,并参与开发;

3.负责架构设计、接口规范制订、技术文档编写、关键技术验证和选型;

4.定期对所有监控运维问题进行分析,提高运维效率,提升团队的服务支持专业度。

 

任职要求

1.全日制本科及以上学历,3年以上运维开发工作经验; 有Java SSM开发经验优先;

2.精通Java或Python语言;

3.精通至少一种开发框架如SSM、Django、Tornado、Flask;

4.有监控系统、CMDB、工单流程等开发经验优先;

5.熟悉以下开源软件:HAProxy、LVS、Nginx、Squid、OpenStack、Docker、Kubernetes、ELK、Zabbix等优先;

6.有设计业务系统整体架构经验优先;

7.深入理解DevOps

!招聘中的岗位:

!!IT类
!!!	岗位编号:	20190519ygda001
*	职位名称:	java开发工程师
*	公司:	知名金融公司
*	地点:	上海
*	级别:	中级
*	核心要求:	Java开发、架构能力,互联网,工作稳定性
*	负责顾问:	余功德
*	岗位描述:	参考本文件中岗位说明或与顾问直接沟通
		
!!!	岗位编号:	20190519ygda002
*	职位名称:	前端开发工程师
*	公司:	一线互联网公司
*	地点:	上海
*	级别:	初级
*	核心要求:	前端开发,前端框架
*	负责顾问:	余功德
*	岗位描述:	参考本文件中岗位说明或与顾问直接沟通
		
!!!	岗位编号:	20190519ygda003
*	职位名称:	人工智能算法资深专家
*	公司:	一线互联网公司
*	地点:	深圳
*	级别:	高级
*	核心要求:	视觉算法,领导力
*	负责顾问:	余功德
*	岗位描述:	参考本文件中岗位说明或与顾问直接沟通
		
!!!	岗位编号:	20190519ygda004
*	职位名称:	推荐算法负责人
*	公司:	一线互联网公司
*	地点:	上海
*	级别:	高级
*	核心要求:	推荐算法,领导力
*	负责顾问:	余功德
*	岗位描述:	参考本文件中岗位说明或与顾问直接沟通

!!!HR类岗位



!直播平台技术图谱

----
!!直播

----
!!采集
*iOS 
**HTTP Live Streaming
**DirectShow
*Android
**setPreviewCallback
**MediaRecorder
**ffmpeg
**getstreamer
*机型适配
*PC 
*mjpg-streame
*jpeg
*摄像头驱动
*摄像机

!! 前处理
*美颜
*GPU计算
   **OpenCL
   **DirectCompute
   **GPGPU
   **C++AMP
*滤镜
*画面风格
*GPUImage
*人脸识别
 **人脸特征点的识别
 **整幅人脸图像的识别
 **模板的识别
 **经网络进行识别

!! 编码
*硬件兼容性
*iOS
**VideoToolbox.framework
*H.264
*H.265
*MPEG

!! 传输
*方案
**Socket
**HTTP
**RTP/RTSP
*CDN
*云服务
*TCP/IP优化

!! 服务器处理
*RTMP
*HLS
*FLV

!! 解码
*硬件兼容性
*H.264
*MPEG

!! 渲染

!! 音频
*降噪
**Kamath
**Rangachari
*编解码
**AAC
**MP3

!! Web音视频标准
*WebRTC
*客户端
    **Chrome/firefox/Opera
      **javascript
    **iOS
      **ObjectC Cordova
*协议
  **JSEP
  **ICE
  **SIP
  **WebSocket
*通讯方式
  **星型
  **MCU
  **Router
*编解码
    **HD264
    **VP8
*穿墙服务
    **stun
    **turnserver/coturn
*signal
    **socket.io-client
    **socket.io
    **signalmaster
    **apprtc
*Media server
    **janus-gateway
    **kurento
    **freeswitch

----
!!应用服务
*IM
*通知
*礼物系统
*支付
*运营系统
*统计

----
!! 统计服务
*数据库
**PostgreSQL
**MySQL
**MongoDB
**Redis
**HBase
*缓存
**Nginx
**Squid
**Varnish
*分布式文件系统
**Ceph
**GlusterFS
**MooseFS
**MogileFS
**FastDFS
**HDFS
**OpenAFS
**GFS
**KFS
**TFS
*消息队列
**RabbitMQ
**ActiveMQ
**Kafka
**MetaQ
**NSQ
**ZeroMQ
**MemcacheQ
**HTTPSQS
**Resque
*运维

 *[[嵌入式开发技能图谱]] 
! 运维工程师

!! Linux基础
*Linux FHS : Filesystem Hierarchy Standard
*Linux 基本操作命令
*Linux 内置编辑器:
  **vi
  **nano
*Linux 系统
**Centos
**Debian
**Ubuntu

!! 脚本
*Shell
*Python
*Perl


!!运维命令[img[operation-command.png]]

运维命令图片引用自 Brendan Gregg 《Linux Performance Analysis and Tools》。

原文链接:http://www.brendangregg.com/linuxperf.html 。

!! 基础服务

*LAMP或LNMP :Apache/Nginx,MySQL,PHP/Python/Perl LAMP (software bundle)
*FTP
*DNS
*SAMBA
*EMAIL
*NTP
*DHCP


!! 运维平台工具
*SSH证书
*Nagios
*Puppet
*Zabbix
*Cacti
*SaltStack
*pssh/dsh
*Fabric

!! 安全
* 防火墙配置
**iptables
**ipset

!! 网络
*TCP/IP 协议
*抓包 tcpdump


!! 底层

*Linux C
*Linux 内核

!! KVM 虚拟化


!!! 虚拟化概念

*半虚拟化
*全虚拟化

!!! KVM 原理


!!! KVM 基础功能

*CPU
*内存
*存储
*网络

!!! KVM 高级功能

*半虚拟化驱动
*热插拔
*动态迁移

!!! KVM 管理工具

*virsh
*OpenStack
*CloudStack
*OpenNebula
*Zstack

!! 硬件
*接口类型
*查看硬件信息
*知道各类型服务器,如塔式、机架式、刀片式

!! 其它
*安全意识
**加密存储/本地存储/SSH私钥添加密码

*责任心
**Owner 意识/第一时间处理报警

*沟通方式/技巧
**推进/改善
	
**推动开发优化代码
	
**进取心/记录分享

 *[[智能运维技能图谱]]

 *[[DBA技能图谱]]

 *[[DevOps技能图谱]] 

 *[[Kubernetes技能图谱]] 
中华人民共和国学科分类与代码国家标准(GB/T13745-2009)


  《中华人民共和国国家标准GB/T13745-2009》,由中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会于2009年5月6日发布,2009年11月1日实施。以下为摘录该标准的《学科分类代码表》内容:

!一级学科目录

!!自然科学类
 110 数学

 130 力学

 140 物理学

 150 化学

 160 天文学

 170 地球科学

 180 生物学

!!农业科学类

 210 农学

 220 林学

 230 畜牧、兽医科学

 240 水产学

!!医药科学类
 310 基础医学

 320 临床医学

 330 预防医学与卫生学

 340 军事医学与特种医学

 350 药学

 360 中医学与中药学

!!工程与技术学类
 410 工程与技术科学基础学科

 420 测绘科学技术

 430 材料科学

 440 矿山工程技术

 450 冶金工程技术

 460 机械工程

 470 动力与电气工程

 480 能源科学技术

 490 核科学技术

 510 电子、通信与自动控制技术

 520 计算机科学技术

 530 化学工程

 540 纺织科学技术

 550 食品科学技术

 560 土木建筑工程

 570 水利工程

 580 交通运输工程

 590 航空、航天科学技术

 610 环境科学技术

 620 安全科学技术

 630 管理学

!!人文与社会科学类
 710 马克思主义

 720 哲学

 730 宗教学

 740 语言学

 750 文学
 760 艺术学

 770 历史学

 780 考古学

 790 经济学

 810 政治学

 820 法学

 830 军事学

 840 社会学

 850 民族学

 860 新闻学与传播学

 870 图书馆、情报与文献学

 880 教育学

 890 体育科学

 910 统计学


!具体学科细分:

110 数学
110.11 数学史

110.14 数理逻辑与数学基础   110.1410 演绎逻辑学(亦称符号逻辑学)   110.1420 证明论(亦称元数学)   110.1430 递归论   110.1440 模型论
  110.1450 公理集合论   110.1460 数学基础   110.1499 数理逻辑与数学基础其他学科

110.17 数论   110.1710 初等数论   110.1720 解析数论   110.1730 代数数论   110.1740 超越数论   110.1750 丢番图逼近
  110.1760 数的几何   110.1770 概率数论   110.1780 计算数论   110.1799 数论其他学科

110.21 代数学   110.2110 线性代数   110.2115 群论   110.2120 域论   110.2125 李群   110.2130 李代数   110.2135 Kac-Moody代数
  110.2140 环论   110.2145 模论   110.2150 格论   110.2155 泛代数理论   110.2160 范畴论   110.2165 同调代数   110.2170 代数K理论
  110.2175 微分代数   110.2180 代数编码理论   110.2199 代数学其他学科

110.24 代数几何学

110.27 几何学   110.2710 几何学基础   110.2715 欧氏几何学   110.2720 非欧几何学(包括黎曼几何学等)   110.2725 球面几何学
  110.2730 向量和张量分析   110.2735 仿射几何学   110.2740 射影几何学   110.2745 微分几何学   110.2750 分数维几何   110.2755 计算几何学
  110.2799 几何学其他学科

110.31 拓扑学   110.3110 点集拓扑学   110.3115 代数拓扑学   110.3120 同伦论   110.3125 低维拓扑学   110.3130 同调论   110.3135 维数论
  110.3140 格上拓扑学   110.3145 纤维丛论   110.3150 几何拓扑学   110.3155 奇点理论   110.3160 微分拓扑学   110.3199 拓扑学其他学科

110.34 数学分析   110.3410 微分学   110.3420 积分学   110.3430 级数论   110.3499 数学分析其他学科

110.37 非标准分析

110.41 函数论   110.4110 实变函数论   110.4120 单复变函数论   110.4130 多复变函数论   110.4140 函数逼近论   110.4150 调和分析
  110.4160 复流形   110.4170 特殊函数论   110.4199 函数论其他学科

110.44 常微分方程   110.4410 定性理论   110.4420 稳定性理论   110.4430 解析理论   110.4499 常微分方程其他学科

110.47 偏微分方程   110.4710 椭圆型偏微分方程   110.4720 双曲型偏微分方程   110.4730 抛物型偏微分方程   110.4740 非线性偏微分方程
  110.4799 偏微分方程其他学科

110.51 动力系统   110.5110 微分动力系统   110.5120 拓扑动力系统   110.5130 复动力系统   110.5199 动力系统其他学科

110.54 积分方程

110.57 泛函分析   110.5710 线性算子理论   110.5715 变分法   110.5720 拓扑线性空间   110.5725 希尔伯特空间   110.5730 函数空间
  110.5735 巴拿赫空间   110.5740 算子代数   110.5745 测度与积分   110.5750 广义函数论   110.5755 非线性泛函分析   110.5799 泛函分析其他学科

110.61 计算数学   110.6110 插值法与逼近论   110.6120 常微分方程数值解   110.6130 偏微分方程数值解   110.6140 积分方程数值解
  110.6150 数值代数   110.6160 连续问题离散化方法   110.6170 随机数值实验   110.6180 误差分析   110.6199 计算数学其他学科

110.64 概率论   110.6410 几何概率   110.6420 概率分布   110.6430 极限理论   110.6440 随机过程   110.6450 马尔可夫过程
  110.6460 随机分析   110.6470 鞅论   110.6480 应用概率论   110.6499 概率论其他学科

110.67 数理统计学   110.6710 抽样理论   110.6715 假设检验   110.6720 非参数统计   110.6725 方差分析   110.6730 相关回归分析
  110.6735 统计推断   110.6740 贝叶斯统计   110.6745 试验设计   110.6750 多元分析   110.6755 统计判决理论   110.6760 时间序列分析
  110.6799 数理统计学其他学科

110.71 应用统计数学   110.7110 统计质量控制   110.7120 可靠性数学   110.7130 保险数学   110.7140 统计模拟   110.7199 应用统计数学其他学科

11

120.20 系统学   120.2010 混沌   120.2020 一般系统论   120.2030 耗散结构理论   120.2040 协同学   120.2050 突变论   120.2060 超循环论
  120.2099 系统学其他学科

120.30 控制理论   120.3010 大系统理论   120.3020 系统辩识   120.3030 状态估计   120.3040 鲁棒控制   120.3099 控制理论其他学科

120.40 系统评估与可行性分析

120.50 系统工程方法论   120.5010 系统建模   120.5099 系统工程方法论其他学科

120.60 系统工程

120.99 信息科学与系统科学其他学科

130 力学
130.10 基础力学   130.1010 理论力学   130.1020 理性力学   130.1030 非线性力学   130.1040 连续介质力学   130.1050 摩擦学
  130.1060 柔性多体力学   130.1070 陀螺力学   130.1080 飞行力学   130.1099 基础力学其他学科

130.15 固体力学   130.1510 弹性力学   130.1515 塑性力学(包括弹塑性力学)   130.1520 粘弹性、粘塑性力学   130.1525 蠕变
  130.1530 界面力学与表面力学   130.1535 疲劳   130.1540 损伤力学   130.1545 断裂力学   130.1550 散体力学   130.1555 细观力学
  130.1560 电磁固体力学   130.1565 结构力学   130.1570 计算固体力学   130.1575 实验固体力学   130.1599 固体力学其他学科

130.20 振动与波   130.2010 线性振动力学   130.2020 非线性振动力学   130.2030 弹性体振动力学   130.2040 随机振动力学
  130.2050 振动控制理论   130.2060 固体中的波   130.2070 流体-固体耦合振动   130.2099 振动与波其他学科

130.25 流体力学   130.2511 理论流体力学   130.2514 水动力学   130.2517 气体动力学   130.2521 空气动力学   130.2524 悬浮体力学
  130.2527 湍流理论   130.2531 粘性流体力学   130.2534 多相流体力学   130.2537 渗流力学   130.2541 物理-化学流体力学
  130.2544 等离子体动力学   130.2547 电磁流体力学   130.2551 非牛顿流体力学   130.2554 流体机械流体力学   130.2557 旋转与分层流体力学
  130.2561 辐射流体力学   130.2564 计算流体力学   130.2567 实验流体力学   130.2571 环境流体力学   130.2599 流体力学其他学科

130.30 流变学

130.35 爆炸力学   130.3510 爆轰与爆燃理论   130.3520 爆炸波、冲击波、应力波   130.3530 高速碰撞动力学   130.3599 爆炸力学其他学科

130.40 物理力学   130.4010 高压固体物理力学   130.4020 稠密流体物理力学   130.4030 高温气体物理力学   130.4040 多相介质物理力学
  130.4050 临界现象与相变   130.4060 原子与分子动力学   130.4099 物理力学其他学科

130.45 统计力学

130.50 应用力学

130.99 力学其他学科

140 物理学
140.10 物理学史

140.15 理论物理学

  140.1510 数学物理   140.1520 电磁场理论   140.1530 经典场论   140.1540 相对论与引力场

  140.1550 量子力学   140.1560 统计物理学   140.1599 理论物理学其他学科

140.20 声学

  140.2010 物理声学   140.2020 非线性声学   140.2030 量子声学   140.2040 超声学

  140.2050 水声学   140.2060 应用声学   140.2099 声学其他学科

140.25 热学

  140.2510 热力学   140.2520 热物性学   140.2530 传热学   140.2599 热学其他学科

140.30 光学

  140.3010 几何光学   140.3015 物理光学   140.3020 非线性光学   140.3025 光谱学

  140.3030 量子光学   140.3035 信息光学   140.3040 导波光学   140.3045 发光学

  140.3050 红外物理   140.3055 激光物理   140.3060 应用光学   140.3099 光学其他学科

140.35 电磁学

  140.3510 电学   140.3520 静电学   140.3530 静磁学   140.3540 电动力学

  140.3599 电磁学其他学科

140.40 无线电物理

  140.4010 电磁波物理   140.4020 量子无线电物理   140.4030 微波物理学   140.4040 超高频无线电物理

  140.4050 统计无线电物理   140.4099 无线电物理其他学科

140.45 电子物理学

  140.4510 量子电子学   140.4520 电子离子与真空物理   140.4530 带电粒子光学   140.4599 电子物理学其他学科

140.50 凝聚态物理学

  140.5010 凝聚态理论   140.5015 金属物理学   140.5020 半导体物理学   140.5025 电介质物理学

  140.5030 晶体学(包括晶体生长、晶体化学等)   140.5035 非晶态物理学   140.5040 液晶物理学   140.5045 薄膜物理学

  140.5050 低维物理   140.5055 表面与界面物理学   140.5060 固体发光   140.5065 磁学

  140.5070 超导物理学   140.5075 低温物理学   140.5080 高压物理学   140.5099 凝聚态物理学其他学科

140.55 等离子体物理学

  140.5510 热核聚变等离子体物理学   140.5520 低温等离子体物理学   140.5530 等离子体光谱学   140.5540 凝聚态等离子体物理学

  140.5550 非中性等离子体物理学   140.5599 等离子体物理学其他学科

140.60 原子分子物理学

  140.6010 原子与分子理论   140.6020 原子光谱学   140.6030 分子光谱学   140.6040 波谱学

  140.6050 原子与分子碰撞过程   140.6099 原子分子物理学其他学科

140.65 原子核物理学

  140.6510 核结构   140.6515 核能谱学   140.6520 低能核反应   140.6525 中子物理学

  140.6530 裂变物理学   140.6535 聚变物理学   140.6540 轻粒子核物理学   140.6545 重离子核物理学

  140.6550 中高能核物理学   140.6599 原子核物理学其他学科

140.70 高能物理学

  140.7010 基本粒子物理学   140.7020 宇宙线物理学   140.7030 粒子加速器物理学   140.7040 高能物理实验

  140.7099 高能物理学其他学科

140.75 计算物理学

140.80 应用物理学

140.99 物理学其他学科

150 化学
150.10 化学史

150.15 无机化学

  150.1510 元素化学   150.1520 配位化学   150.1530 同位素化学   150.1540 无机固体化学

  150.1550 无机合成化学   150.1560 无机分离化学   150.1570 物理无机化学   150.1580 生物无机化学

  150.1599 无机化学其他学科

150.20 有机化学

  150.2010 元素有机化学(包括金属有机化学等)   150.2020 天然产物有机化学   150.2030 有机固体化学   150.2040 有机合成化学

  150.2050 有机光化学   150.2060 物理有机化学(包括理论有机化学、立体化学等)   150.2070 生物有机化学   150.2099 有机化学其他学科

150.25 分析化学

  150.2510 化学分析(包括定性分析、定量分析等)   150.2515 电化学分析   150.2520 光谱分析   150.2525 波谱分析

  150.2530 质谱分析   150.2535 热谱分析   150.2540 色谱分析   150.2545 光度分析

  150.2550 放射分析   150.2555 状态分析与物相分析   150.2560 分析化学计量学   150.2599 分析化学其他学科

150.30 物理化学

  150.3010 化学热力学   150.3015 化学动力学(包括分子反应动力学等)   150.3020 结构化学(包括表面化学、结构分析等)

  150.3025 量子化学   150.3030 胶体化学与界面化学   150.3035 催化化学   150.3040 热化学

  150.3045 光化学(包括超分子光化学、光电化学、激光化学、感光化学等)   150.3050 电化学   150.3055 磁化学

  150.3060 高能化学(包括辐射化学,等离体化学)   150.3065 计算化学   150.3099 物理化学其他学科

150.35 化学物理学

150.40 高分子物理

150.45 高分子化学

  150.4510 无机高分子化学   150.4520 天然高分子化学   150.4530 功能高分子(包括液晶高分子化学)

  150.4540 高分子合成化学   150.4550 高分子物理化学   150.4560 高分子光化学   150.4599 高分子化学其他学科

150.50 核化学

  150.5010 放射化学   150.5020 核反应化学   150.5030 裂变化学   150.5040 聚变化学

  150.5050 重离子核化学   150.5060 核转变化学   150.5070 环境放射化学   150.5099 核化学其他学科

150.55 应用化学

150.99 化学其他学科

160 天文学
160.10 天文学史

160.15 天体力学

  160.1510 摄动理论   160.1520 天体力学定性理论   160.1530 天体形状与自转理论   160.1540 天体力学数值方法

  160.1550 天文动力学(包括人造卫星、宇宙飞船动力学等)   160.1560 历书天文学   160.1599 天体力学其他学科

160.20 天体物理学

  160.2010 理论天体物理学   160.2020 相对论天体物理学   160.2030 等离子体天体物理学

  160.2040 高能天体物理学(包括天体核物理学)   160.2050 实测天体物理学   160.2099 天体物理学其他学科

160.25 天体化学

160.30 天体测量学

  160.3010 天文地球动力学   160.3020 基本天体测量学   160.3030 照相天体测量学   160.3040 射电天体测量学

  160.3050 空间天体测量学   160.3060 方位天文学   160.3070 实用天文学   160.3099 天体测量学其他学科

160.35 射电天文学

  160.3510 射电天体物理学   160.3520 射电天文方法   160.3599 射电天文学其他学科

160.40 空间天文学

  160.4010 红外天文学   160.4020 紫外天文学   160.4030 X射线天文学   160.4040 r射线天文学

  160.4050 中微子天文学   160.4099 空间天文学其他学科

160.45 天体演化学(各层次天体形成与演化入各学科)

160.50 星系与宇宙学

  160.5010 星系动力学   160.5020 星系天文学   160.5030 运动宇宙学   160.5040 星系际物质

  160.5050 大爆炸宇宙论   160.5060 星系形成与演化   160.5070 宇宙大尺度结构起源与演化   160.5099 星系与宇宙学其他学科

160.55 恒星与银河系

  160.5510 恒星物理学   160.5520 恒星天文学   160.5530 恒星形成与演化   160.5540 星际物质物理学

  160.5550 银河系结构与运动   160.5599 恒星与银河系其他学科

160.60 太阳与太阳系

  160.6010 太阳物理学   160.6020 太阳系物理学   160.6030 太阳系形成与演化   160.6040 行星物理学

  160.6050 行星际物理学   160.6060 陨星学   160.6099 太阳与太阳系其他学科

160.65 天体生物学

160.99 天文学其他学科

170 地球科学
170.10 地球科学史

170.15 大气科学

  170.1510 大气物理学(包括大气光学、大气声学、大气电学、云雾物理学、边界层物理学、中层物理学等)

  170.1515 大气化学   170.1520 大气探测(包括大气遥感)   170.1525 动力气象学(包括数值天气预报与数值模拟等)   170.1530 天气学

  170.1535 气候学   170.1540 云与降水物理学   170.1545 应用气象学   170.1599 大气科学其他学科

170.20 固体地球物理学

  170.2010 地球动力学   170.2015 地球重力学   170.2020 地球流体力学   170.2025 地壳与地形变

  170.2030 地球内部物理学   170.2035 地声学   170.2040 地热学   170.2045 地电学

  170.2050 地磁学   170.2055 放射性地球物理学   170.2060 地震学   170.2065 勘探地球物理学

  170.2070 计算地球物理学   170.2075 实验地球物理学   170.2099 固体地球物理学其他学科

170.25 空间物理学

  170.2510 电离层物理学   170.2520 高层大气物理学   170.2530 磁层物理学   170.2540 空间物理探测

  170.2550 空间环境学   170.2599 空间物理学其他学科

170.30 地球化学

  170.3010 元素地球化学   170.3015 有机地球化学   170.3020 放射性地球化学   170.3025 同位素地球化学

  170.3030 生物地球化学   170.3035 地球内部化学   170.3040 同位素地质年代学   170.3045 成矿地球化学

  170.3050 勘探地球化学   170.3055 实验地球化学   170.3099 地球化学其他学科

170.35 大地测量学

  170.3510 地球形状学   170.3520 几何大地测量学   170.3530 物理大地测量学   170.3540 动力大地测量学

  170.3550 空间大地测量学   170.3560 行星大地测量学   170.3599 大地测量学其他学科

170.40 地图学

170.45 地理学

  170.4510 自然地理学(包括化学地理学、生态地理学、地貌学、冰川学、冻土学、沙漠学、岩溶学等)

  170.4520 人文地理学(包括区域地理、旅游地理, 其他入有关学科)   170.4599 地理学其他学科

170.50 地质学

  170.5011 数学地质学   170.5014 地质力学   170.5017 动力地质学   170.5021 矿物学(包括放射性矿物学)

  170.5024 矿床学与矿相学(包括放射性矿床学,不包括石油、天然气和煤。)

  170.5027 岩石学   170.5031 岩土力学   170.5034 沉积学   170.5037 古地理学

  170.5041 古生物学   170.5044 地层学与地史学   170.5047 前寒武纪地质学   170.5051 第四纪地质学

  170.5054 构造地质学(包括显微构造学等)   170.5057 大地构造学   170.5061 勘查地质学

  170.5064 水文地质学(包括放射性水文地质学)   170.5067 遥感地质学   170.5071 区域地质学   170.5074 火山学

  170.5077 石油与天然气地质学   170.5081 煤田地质学   170.5084 实验地质学   170.5099 地质学其他学科

170.55 水文学

  170.5510 水文物理学   170.5515 水文化学   170.5520 水文地理学   170.5525 水文气象学

  170.5530 水文测量   170.5535 水文图学   170.5540 湖沼学   170.5545 河流学与河口水文学

  170.5599 水文学其他学科

170.60 海洋科学

  170.6010 海洋物理学   170.6015 海洋化学   170.6020 海洋地球物理学   170.6025 海洋气象学

  170.6030 海洋地质学   170.6035 物理海洋学   170.6040 海洋生物学   170.6045 河口、海岸学

  170.6050 海洋调查与监测   170.6099 海洋科学其他学科

170.99 地球科学其他学科

180 生物学
180.11 生物数学(包括生物统计学等)

180.14 生物物理学

  180.1410 生物信息论与生物控制论   180.1415 生物力学(包括生物流体力学与生物流变学等)   180.1420 理论生物物理学

  180.1425 生物声学与声生物物理学   180.1430 生物光学与光生物物理学   180.1435 生物电磁学   180.1440 生物能量学

  180.1445 低温生物物理学   180.1450 分子生物物理学   180.1455 空间生物物理学   180.1460 仿生学

  180.1465 系统生物物理学   180.1499 生物物理学其他学科

180.17 生物化学

  180.1710 多肽与蛋白质生物化学   180.1715 核酸生物化学   180.1720 多糖生物化学   180.1725 脂类生物化学

  180.1730 酶学   180.1735 膜生物化学   180.1740 激素生物化学   180.1745 生殖生物化学

  180.1750 免疫生物化学   180.1755 毒理生物化学   180.1760 比较生物化学   180.1765 应用生物化学

  180.1799 生物化学其他学科

180.21 细胞生物学

  180.2110 细胞生物物理学   180.2120 细胞结构与形态学   180.2130 细胞生理学   180.2140 细胞进化学

  180.2150 细胞免疫学   180.2160 细胞病理学   180.2199 细胞生物学其他学科

180.24 生理学

  180.2411 形态生理学   180.2414 新陈代谢与营养生理学   180.2417 心血管生理学   180.2421 呼吸生理学

  180.2424 消化生理学   180.2427 血液生理学   180.2431 泌尿生理学   180.2434 内分泌生理学

  180.2437 感官生理学   180.2441 生殖生理学   180.2444 骨骼生理学   180.2447 肌肉生理学

  180.2451 皮肤生理学   180.2454 循环生理学   180.2457 比较生理学   180.2461 年龄生理学

  180.2464 特殊环境生理学   180.2467 语言生理学   180.2499 生理学其他学科

180.27 发育生物学

180.31 遗传学

  180.3110 数量遗传学   180.3115 生化遗传学   180.3120 细胞遗传学   180.3125 体细胞遗传学

  180.3130 发育遗传学(亦称发生遗传学)   180.3135 分子遗传学   180.3140 辐射遗传学   180.3145 进化遗传学

  180.3150 生态遗传学   180.3155 免疫遗传学   180.3160 毒理遗传学   180.3165 行为遗传学

  180.3170 群体遗传学   180.3199 遗传学其他学科

180.34 放射生物学

  180.3410 放射生物物理学   180.3420 细胞放射生物学   180.3430 放射生理学   180.3440 分子放射生物学

  180.3450 放射免疫学   180.3460 放射毒理学   180.3499 放射生物学其他学科

180.37 分子生物学

180.41 生物进化论

180.44 生态学

  180.4410 数学生态学   180.4415 化学生态学   180.4420 生理生态学   180.4425 生态毒理学

  180.4430 区域生态学   180.4435 种群生态学   180.4440 群落生态学   180.4445 生态系统生态学

  180.4450 生态工程学   180.4499 生态学其他学科

180.47 神经生物学

  180.4710 神经生物物理学   180.4715 神经生物化学   180.4720 神经形态学   180.4725 细胞神经生物学

  180.4730 神经生理学   180.4735 发育神经生物学   180.4740 分子神经生物学   180.4745 比较神经生物学

  180.4750 系统神经生物学   180.4799 神经生物学其他学科

180.51 植物学

  180.5110 植物化学   180.5115 植物生物物理学   180.5120 植物生物化学   180.5125 植物形态学

  180.5130 植物解剖学   180.5135 植物细胞学   180.5140 植物生理学   180.5145 植物胚胎学

  180.5150 植物发育学   180.5155 植物遗传学   180.5160 植物生态学   180.5165 植物地理学

  180.5170 植物群落学   180.5175 植物分类学   180.5180 实验植物学   180.5185 植物寄生虫学

  180.5199 植物学其他学科

180.54 昆虫学

  180.5410 昆虫生物化学   180.5415 昆虫形态学   180.5420 昆虫组织学   180.5425 昆虫生理学

  180.5430 昆虫生态学   180.5435 昆虫病理学   180.5440 昆虫毒理学   180.5445 昆虫行为学

  180.5450 昆虫分类学   180.5455 实验昆虫学   180.5460 昆虫病毒学   180.5499 昆虫学其他学科

180.57 动物学

  180.5711 动物生物物理学   180.5714 动物生物化学   180.5717 动物形态学   180.5721 动物解剖学

  180.5724 动物组织学   180.5727 动物细胞学   180.5731 动物生理学   180.5734 动物生殖生物学

  180.5737 动物生长发育学   180.5741 动物遗传学   180.5744 动物生态学   180.5747 动物病理学

  180.5751 动物行为学   180.5754 动物地理学   180.5757 动物分类学   180.5761 实验动物学

  180.5764 动物寄生虫学   180.5767 动物病毒学   180.5799 动物学其他学科

180.61 微生物学

  180.6110 微生物生物化学   180.6115 微生物生理学   180.6120 微生物遗传学   180.6125 微生物生态学

  180.6130 微生物免疫学   180.6135 微生物分类学   180.6140 真菌学   180.6145 细菌学

  180.6150 应用微生物学   180.6199 微生物学其他学科

180.64 病毒学

  180.6410 病毒生物化学   180.6420 分子病毒学   180.6430 病毒生态学   180.6440 病毒分类学

  180.6499 病毒学其他学科

180.67 人类学

  180.6710 人类起源与演化学   180.6715 人类形态学   180.6720 人类遗传学   180.6725 分子人类学

  180.6730 人类生态学   180.6735 心理人类学   180.6740 古人类学   180.6745 人种学

  180.6750 人体测量学   180.6799 人类学其他学科

180.71 生物工程(亦称生物技术)

  180.7110 基因工程(亦称遗传工程)   180.7120 细胞工程   180.7130 蛋白质工程   180.7140 酶工程

  180.7150 发酵工程(亦称微生物工程)   180.7199 生物工程其他学科

180.74 心理学

  180.7410 心理学史   180.7415 普通心理学   180.7420 生理心理学   180.7425 认知心理学

  180.7430 发展心理学   180.7435 个性心理学   180.7440 缺陷心理学   180.7445 比较心理学

  180.7450 实验心理学   180.7455 应用心理学   180.7499 心理学其他学科

180.99 生物学其他学科

210 农学
210.10 农业史

210.20 农业基础学科

  210.2010 农业数学   210.2020 农业气象学与农业气候学   210.2030 农业生物物理学   210.2040 农业生物化学

  210.2050 农业生态学   210.2060 农业植物学   210.2070 农业微生物学   210.2080 植物营养学

  210.2099 农业基础学科其他学科

210.30 农艺学

  210.3010 作物形态学   210.3015 作物生理学   210.3020 作物遗传学   210.3025 作物生态学

  210.3030 种子学   210.3035 作物育种学与良种繁育学   210.3040 作物栽培学   210.3045 作物耕作学

  210.3050 作物种质资源学   210.3055 农产品贮藏与加工   210.3099 农艺学其他学科

210.40 园艺学

  210.4010 果树学   210.4020 瓜果学   210.4030 蔬菜学   210.4040 果蔬贮藏与加工

  210.4050 茶学(包括茶加工等)   210.4060 观赏园艺学   210.4099 园艺学其他学科

210.50 土壤学

  210.5010 土壤物理学   210.5015 土壤化学   210.5020 土壤地理学   210.5025 土壤生物学

  210.5030 土壤生态学   210.5035 土壤耕作学   210.5040 土壤改良学   210.5045 土壤肥料学

  210.5050 土壤分类学   210.5055 土壤调查与评价   210.5099 土壤学其他学科

210.60 植物保护学

  210.6010 植物检疫学   210.6015 植物免疫学   210.6020 植物病理学   210.6025 植物药理学

  210.6030 农业昆虫学   210.6035 植物病毒学   210.6040 农药学   210.6045 植物病虫害测报学

  210.6050 抗病虫害育种   210.6055 有害生物化学防治   210.6060 有害生物生物防治   210.6065 有害生物综合防治

  210.6070 杂草防治   210.6075 鸟兽、鼠害防治   210.6099 植物保护学其他学科

210.70 农业工程

  210.7010 农业机械学(包括农业机械制造等)   210.7015 农业机械化   210.7020 农业电气化与自动化

  210.7025 农田水利(包括灌溉工程、排水工程等)   210.7030 水土保持学   210.7035 农田测量

  210.7040 农业环保工程   210.7045 农业区划   210.7050 农业系统工程   210.7099 农业工程其他学科

210.99 农学其他学科  

220 林学
220.10 林业基础学科

  220.1010 森林气象学   220.1020 森林地理学   220.1030 森林水文学   220.1040 森林土壤学

  220.1050 树木生理学   220.1060 森林生态学   220.1070 森林植物学   220.1099 林业基础学科其他学科

220.15 林木遗传育种学

  220.1510 林木育种学   220.1520 林木遗传学   220.1599 林木遗传育种学其他学科

220.20 森林培育学(亦称造林学)

220.25 森林经理学

  220.2510 森林测计学   220.2520 森林测量学   220.2530 林业遥感   220.2540 林业信息管理

  220.2550 林业系统工程   220.2599 森林经理学其他学科

220.30 森林保护学

  220.3010 森林病理学   220.3020 森林昆虫学   220.3030 森林防火学   220.3099 森林保护学其他学科

220.35 野生动物保护与管理

220.40 防护林学

220.45 经济林学

220.50 园林学

  220.5010 园林植物学   220.5020 风景园林工程   220.5030 风景园林经营与管理   220.5099 园林学其他学科

220.55 林业工程

  220.5510 森林采运学   220.5520 林业机械   220.5530 林业机械化与电气化   220.5540 木材学

  220.5550 木材加工与人造板工艺学(包括家具设计与制造等)   220.5560 木材防腐学   220.5570 林产化学加工学

  220.5599 林业工程其他学科

220.60 森林统计学

220.65 林业经济学

220.99 林学其他学科  

230 畜牧、兽医科学
230.10 畜牧、兽医科学基础学科

  230.1010 家畜生物化学   230.1020 家畜生理学   230.1030 家畜遗传学   230.1040 家畜生态学

  230.1050 家畜微生物学   230.1099 畜牧、兽医科学基础学科其他学科

230.20 畜牧学

  230.2010 家畜育种学   230.2015 家畜繁殖学   230.2020 动物营养学   230.2025 饲料学

  230.2030 家畜饲养管理学   230.2035 特种经济动物饲养学   230.2040 家畜行为学   230.2045 家畜卫生学

  230.2050 草原学(包括牧草学、牧草育种学、牧草栽培学、草地生态学、草地保护学等)

  230.2055 畜产品贮藏与加工   230.2060 畜牧机械化   230.2065 养禽学   230.2070 养蜂学

  230.2075 养蚕学   230.2080 畜牧经济学   230.2099 畜牧学其他学科

230.30 兽医学

  230.3010 家畜解剖学   230.3015 家畜组织胚胎学   230.3020 兽医免疫学

  230.3025 家畜病理学(亦称兽医病理学)   230.3030 兽医药理学   230.3035 兽医临床学

  230.3040 兽医卫生检疫学   230.3045 家畜寄生虫学   230.3050 家畜传染病学   230.3055 家畜病毒学

  230.3060 中兽医学   230.3065 兽医器械学   230.3099 兽医学其他学科

230.99 畜牧、兽医科学其他学科  

240 水产学
240.10 水产学基础学科

  240.1010 水产化学   240.1020 水产地理学   240.1030 水产生物学   240.1040 水域生态学

  240.1099 水产学基础学科其他学科

240.15 水产增殖学

240.20 水产养殖学

240.25 水产饲料学

240.30 水产保护学

240.35 捕捞学

240.40 水产品贮藏与加工

240.45 水产工程学

240.50 水产资源学

240.55 水产经济学

240.99 水产学其他学科  

310 基础医学
310.11 医学生物化学

310.14 人体解剖学

  310.1410 系统解剖学   310.1420 局部解剖学   310.1499 人体解剖学其他学科

310.17 医学细胞生物学

310.21 人体生理学

310.24 人体组织胚胎学

310.27 医学遗传学

310.31 放射医学

310.34 人体免疫学

310.37 医学寄生虫学

  310.3710 医学寄生虫免疫学   310.3720 医学昆虫学   310.3730 医学蠕虫学   310.3740 医学原虫学

  310.3799 医学寄生虫学其他学科

310.41 医学微生物学(包括医学病毒学等)

310.44 病理学

  310.4410 病理生物学   310.4420 病理解剖学   310.4430 病理生理学   310.4440 免疫病理学

  310.4450 实验病理学   310.4460 比较病理学   310.4470 系统病理学   310.4480 环境病理学

  310.4499 病理学其他学科

310.47 药理学

  310.4710 基础药理学   310.4720 临床药理学   310.4730 生化药理学   310.4740 分子药理学

  310.4750 免疫药理学   310.4799 药理学其他学科

310.51 医学实验动物学

310.54 医学心理学

310.57 医学统计学

310.61 生物医学工程学

  310.6110 生物医学电子学   310.6120 临床工程学   310.6130 康复工程学   310.6140 生物医学测量学

  310.6150 人工器官与生物医学材料学   310.6199 生物医学工程学其他学科

310.99 基础医学其他学科  

320 临床医学
320.11 临床诊断学

  320.1110 症状诊断学   320.1120 物理诊断学   320.1130 机能诊断学

  320.1140 医学影象学(包括放射诊断学、同位素诊断学、超声诊断学等)   320.1150 临床放射学   320.1160 实验诊断学

  320.1199 临床诊断学其他学科

320.14 保健医学

  320.1410 康复医学   320.1420 运动医学(包括力学运动医学等)   320.1430 老年医学

  320.1499 保健医学其他学科

320.17 理疗学

320.21 麻醉学

  320.2110 麻醉生理学   320.2120 麻醉药理学   320.2130 麻醉应用解剖学   320.2199 麻醉学其他学科

320.24 内科学

  320.2410 心血管病学   320.2415 呼吸病学   320.2420 结核病学   320.2425 胃肠病学

  320.2430 血液病学   320.2435 肾脏病学   320.2440 内分泌学   320.2445 风湿病学与自体免疫病学

  320.2450 变态反应学   320.2455 感染性疾病学   320.2499 内科学其他学科

320.27 外科学

  320.2710 普通外科学   320.2715 显微外科学   320.2720 神经外科学   320.2725 颅脑外科学

  320.2730 胸外科学   320.2735 心血管外科学   320.2740 泌尿外科学   320.2745 骨外科学

  320.2750 烧伤外科学   320.2755 整形外科学   320.2760 器官移植外科学   320.2765 实验外科学

  320.2799 外科学其他学科

320.31 妇产科学

  320.3110 妇科学   320.3120 产科学   320.3130 围产医学(亦称围生医学)   320.3140 助产学

  320.3150 胎儿学   320.3160 妇科产科手术学   320.3199 妇产科学其他学科

320.34 儿科学

320.37 眼科学

320.41 耳鼻咽喉科学

320.44 口腔医学

  320.4410 口腔解剖生理学   320.4415 口腔组织学与口腔病理学   320.4420 口腔材料学   320.4425 口腔影象诊断学

  320.4430 口腔内科学   320.4435 口腔颌面外科学   320.4440 口腔矫形学   320.4445 口腔正畸学

  320.4450 口腔病预防学   320.4499 口腔医学其他学科

320.47 皮肤病学

320.51 性医学

320.54 神经病学

320.57 精神病学(包括精神卫生及行为医学等)

320.61 急诊医学

320.64 核医学

320.67 肿瘤学

  320.6710 肿瘤免疫学   320.6720 肿瘤病因学   320.6730 肿瘤病理学   320.6740 肿瘤诊断学

  320.6750 肿瘤治疗学   320.6760 肿瘤预防学   320.6770 实验肿瘤学   320.6799 肿瘤学其他学科

320.71 护理学

  320.7110 基础护理学   320.7120 专科护理学   320.7130 特殊护理学   320.7140 护理心理学

  320.7150 护理伦理学   320.7160 护理管理学   320.7199 护理学其他学科

320.99 临床医学其他学科  

330 预防医学与卫生学
330.11 营养学

330.14 毒理学

330.17 消毒学

330.21 流行病学

330.24 传染病学

330.27 媒介生物控制学

330.31 环境医学

330.34 职业病学

330.37 地方病学

330.41 社会医学

330.44 卫生检验学

330.47 食品卫生学

330.51 儿少卫生学

330.54 妇幼卫生学

330.57 环境卫生学

330.61 劳动卫生学

330.64 放射卫生学

330.67 卫生工程学

330.71 卫生经济学

330.74 优生学

330.77 健康教育学

330.81 卫生管理学

330.99 预防医学与卫生学其他学科  

340 军事医学与特种医学
340.10 军事医学

  340.1010 野战外科学   340.1015 军队流行病学   340.1020 军事环境医学   340.1025 军队卫生学

  340.1030 军队卫生装备学   340.1035 军事人机工效学   340.1040 核武器医学防护学   340.1045 化学武器医学防护学

  340.1050 生物武器医学防护学   340.1055 激光与微波医学防护学   340.1099 军事医学其他学科

340.20 特种医学

  340.2010 航空航天医学   340.2020 潜水医学   340.2030 航海医学   340.2040 法医学

  340.2099 特种医学其他学科

340.99 军事医学与特种医学其他学科  

350 药学
350.10 药物化学(包括天然药物化学等)

350.20 生物药物学

350.25 微生物药物学

350.30 放射性药物学

350.35 药剂学

350.40 药效学

350.45 药物管理学

350.50 药物统计学

350.99 药学其他学科  

360 中医学与中药学
360.10 中医学

  360.1011 中医基础理论(包括经络学等)   360.1014 中医诊断学   360.1017 中医内科学

  360.1021 中医外科学   360.1024 中医骨伤科学   360.1027 中医妇科学   360.1031 中医儿科学

  360.1034 中医眼科学   360.1037 中医耳鼻咽喉科学   360.1041 中医口腔科学   360.1044 中医老年病学

  360.1047 针灸学(包括针刺镇痛与麻醉等)   360.1051 按摩推拿学   360.1054 中医养生康复学(包括气功研究等)

  360.1057 中医护理学   360.1061 中医食疗学   360.1064 方剂学

  360.1067 中医文献学(包括难经、内经、伤寒论、金匮要略、腧穴学等)   360.1099 中医学其他学科

360.20 民族医学

360.30 中西医结合医学

360.40 中药学

  360.4010 中药化学   360.4015 中药药理学   360.4020 本草学   360.4025 药用植物学

  360.4030 中药鉴定学   360.4035 中药炮制学   360.4040 中药药剂学   360.4045 中药资源学

  360.4050 中药管理学   360.4099 中药学其他学科

360.99 中医学与中药学其他学科  

410 工程与技术科学基础学科
410.10 工程数学

410.15 工程控制论

410.20 工程力学

410.25 工程物理学

410.30 工程地质学

410.35 工程水文学

410.40 工程仿生学

410.45 工程心理学

410.50 标准化科学技术(亦称标准化学)

410.55 计量学

410.60 工程图学

410.65 勘查技术

410.70 工程通用技术

  410.7010 密封技术   410.7020 粉末技术   410.7030 真空技术   410.7040 薄膜技术

  410.7050 爆破技术   410.7060 包装技术   410.7070 照相技术   410.7080 物料搬运技术

  410.7099 工程通用技术其他学科

410.75 工业工程学(亦称工程系统工程)

410.99 工程与技术科学基础学科其他学科  

420 测绘科学技术
420.10 大地测量技术

  420.1010 大地测量定位   420.1020 重力测量   420.1030 测量平差   420.1099 大地测量技术其他学科

420.20 摄影测量与遥感技术

  420.2010 地物波谱学   420.2020 近景摄影测量   420.2030 航空摄影测量   420.2040 遥感信息工程

  420.2099 摄影测量与遥感技术其他学科

420.30 地图制图技术

  420.3010 地图投影学   420.3020 地图设计与编绘   420.3030 图形图象复制技术   420.3040 地理信息系统

  420.3099 地图制图技术其他学科

420.40 工程测量技术

  420.4010 地籍测量   420.4020 精密工程测量   420.4099 工程测量技术其他学科

420.50 海洋测绘

  420.5010 海洋大地测量   420.5015 海洋重力测量   420.5020 海洋磁力测量   420.5025 海洋跃层测量

  420.5030 海洋声速测量   420.5035 海道测量   420.5040 海底地形测量   420.5045 海图制图

  420.5050 海洋工程测量   420.5099 海洋测绘其他学科

420.60 测绘仪器

420.99 测绘科学技术其他学科  

430 材料科学
430.10 材料科学基础学科

  430.1010 材料力学   430.1020 相图与相变(包括合金化等)   430.1030 材料的组织、结构、缺陷与性能

  430.1040 金属学   430.1050 陶瓷学   430.1060 高分子材料学   430.1099 材料科学基础学科其他学科

430.15 材料表面与界面(包括表面优化技术)

430.20 材料失效与保护(包括材料腐蚀、磨损、老化、断裂及其控制等)

430.25 材料检测与分析技术

430.30 材料实验

430.35 材料合成与加工工艺

430.40 金属材料

  430.4010 黑色金属及其合金   430.4020 有色金属及其合金   430.4030 非晶、微晶金属材料(包括准晶和纳米晶材料等)

  430.4040 低维金属材料(包括薄膜、纤维和零维金属材料等)   430.4050 特种功能金属材料   430.4099 金属材料其他学科

430.45 无机非金属材料

  430.4510 玻璃与非晶无机非金属材料   430.4520 低维无机非金属材料(包括薄膜、纤维和零维非金属材料等)   430.4530 人工晶体

  430.4540 无机陶瓷材料(包括耐火材料等)   430.4550 特种功能无机非金属材料   430.4599 无机非金属材料其他学科

430.50 有机高分子材料

  430.5010 塑料、橡胶和纤维   430.5020 功能高分子材料   430.5030 高性能高分子材料

  430.5040 高分子液晶材料   430.5099 有机高分子材料其他学科

430.55 复合材料

  430.5510 金属基复合材料(包括多相复合材料等)   430.5520 无机非金属基复合材料(包括无机多相复合材料等)

  430.5530 聚合物基复合材料(包括有机多相复合材料等)   430.5599 复合材料其他学科

430.99 材料科学其他学科  

440 矿山工程技术
440.10 矿山地质学

440.15 矿山测量

440.20 矿山设计

  440.2010 地下矿设计   440.2020 露天矿设计   440.2099 矿山设计其他学科

440.25 矿山地面工程

440.30 井巷工程

  440.3010 矿山压力工程   440.3020 矿山支护工程   440.3099 井巷工程其他学科

440.35 采矿工程

  440.3510 煤矿开采   440.3520 煤及油母页岩地下气化   440.3530 金属矿开采   440.3540 非金属矿开采

  440.3599 采矿工程其他学科

440.40 选矿工程

  440.4010 选矿理论   440.4020 选矿技术   440.4030 矿石处理   440.4099 选矿工程其他学科

440.45 钻井工程

440.50 油气田开发工程

440.55 石油、天然气储存与运输工程

440.60 矿山机械工程

  440.6010 采矿机械   440.6020 选矿机械   440.6030 矿山运输机械   440.6099 矿山机械工程其他学科

440.65 矿山电气工程

440.70 采矿环境工程

440.75 矿山安全

440.80 矿山综合利用工程

440.99 矿山工程技术其他学科  

450 冶金工程技术
450.10 冶金物理化学

450.15 冶金反应工程

450.20 冶金原料与预处理

450.25 冶金热能工程

  450.2510 冶金燃料   450.2520 燃烧理论   450.2530 燃烧计算   450.2540 冶金分析

  450.2599 冶金热能工程其他学科

450.30 冶金技术

  450.3010 提炼冶金   450.3015 粉末冶金   450.3020 真空冶金   450.3025 电磁冶金

  450.3030 原子能冶金   450.3035 湿法冶金   450.3040 纤维冶金   450.3045 卤素冶金

  450.3050 微生物冶金   450.3099 冶金技术其他学科

450.35 钢铁冶金

  450.3510 炼铁   450.3520 炼钢   450.3530 铁合金冶炼   450.3599 钢铁冶金其他学科

450.40 有色金属冶金

450.45 轧制

450.50 冶金机械及自动化

450.99 冶金工程技术其他学科  

460 机械工程
460.10 机械史

460.15 机械学

  460.1510 机械原理与机构学   460.1520 机械动力学与振动   460.1530 机械强度   460.1540 机械摩擦、磨损及润滑

  460.1599 机械学其他学科

460.20 机械设计

  460.2010 机械设计原理与方法   460.2020 机械零件及传动   460.2030 机械公差、配合与技术测量   460.2040 机械制图

  460.2099 机械设计其他学科

460.25 机械制造工艺与设备

  460.2510 铸造工艺与设备   460.2515 焊接工艺与设备(包括连接工艺与设备)   460.2520 塑性加工工艺与设备

  460.2525 热处理工艺与设备   460.2530 切削加工工艺   460.2535 特种加工工艺

  460.2540 机器装配工艺   460.2545 非金属加工工艺   460.2599 机械制造工艺与设备其他学科

460.30 刀具技术

  460.3010 切削理论   460.3020 切削刀具   460.3030 磨削工具   460.3099 刀具技术其他学科

460.35 机床技术

  460.3510 机床基础理论   460.3520 金属切削机床   460.3530 数字控制机床   460.3540 特种加工机床

  460.3599 机床技术其他学科

460.40 仪器仪表技术

  460.4010 仪器仪表基础理论   460.4015 仪器仪表材料   460.4020 传感器技术   460.4025 精密仪器制造

  460.4030 测试计量仪器   460.4035 光学技术与仪器   460.4040 天文仪器   460.4045 地球科学仪器

  460.4050 大气仪器仪表   460.4099 仪器仪表技术其他学科

460.45 流体传动与控制(包括气动液压控制技术等)

460.50 机械制造自动化

  460.5010 成组技术   460.5020 数控技术   460.5030 工业机器人技术   460.5040 计算机辅助制造

  460.5099 机械制造自动化其他学科

460.55 专用机械工程

  460.5510 印刷、复制技术   460.5599 专用机械工程其他学科

460.99 机械工程其他学科  

470 动力与电气工程
470.10 工程热物理

  470.1010 工程热力学   470.1020 工程传热、传质学   470.1030 燃烧学   470.1040 多相流动

  470.1099 工程热物理其他学科

470.20 热工学

  470.2010 热工测量与仪器仪表   470.2020 制冷与低温工程   470.2030 供热工程   470.2040 工业锅炉

  470.2099 热工学其他学科

470.30 动力机械工程

  470.3010 蒸汽工程(包括锅炉、蒸汽机、汽轮机等)   470.3020 内燃机工程(包括汽油机、柴油机、气体燃料发动机等)   470.3030 流体机械及流体动力工程

  470.3040 喷气推进机与涡轮机械   470.3099 动力机械工程其他学科

470.40 电气工程

  470.4011 电工学   470.4014 电路理论   470.4017 电气测量技术及其仪器仪表   470.4021 电工材料

  470.4024 电机学   470.4027 电器学   470.4031 电力电子技术   470.4034 高电压工程

  470.4037 绝缘技术   470.4041 电热与高频技术   470.4044 超导电工技术

  470.4047 发电工程(包括水力、热力、风力、磁流体发电工程等)   470.4051 输配电工程   470.4054 电力系统及其自动化

  470.4057 电力拖动及其自动化   470.4061 用电技术   470.4064 电加工技术   470.4099 电气工程其他学科

470.99 动力与电气工程其他学科  

480 能源科学技术
480.10 能源化学

480.20 能源地理学

480.30 能源计算与测量

480.40 储能技术

480.50 节能技术

480.60 一次能源

  480.6010 煤炭能   480.6020 石油、天然气能   480.6030 水能(包括海洋能等)   480.6040 风能

  480.6050 地热能   480.6060 生物能   480.6070 太阳能   480.6080 核能

  480.6099 一次能源其他学科

480.70 二次能源

  480.7010 煤气能   480.7020 电能   480.7030 蒸汽能   480.7040 沼气能

  480.7050 激光能   480.7099 二次能源其他学科

480.80 能源系统工程

480.99 能源科学技术其他学科  

490 核科学技术
490.10 辐射物理与技术

490.15 核探测技术与核电子学

490.20 放射性计量学

490.25 核仪器、仪表

490.30 核材料与工艺技术

  490.3010 核燃料与工艺技术   490.3099 核材料与工艺技术其他学科

490.35 粒子加速器

  490.3510 粒子加速器工艺   490.3520 粒子加速器应用   490.3599 粒子加速器其他学科

490.40 裂变堆工程技术

  490.4010 裂变堆物理   490.4020 裂变堆热工与水力   490.4030 裂变堆控制   490.4040 裂变堆结构

  490.4050 裂变堆屏蔽与防护   490.4060 裂变堆建造技术   490.4099 裂变堆工程技术其他学科

490.45 核聚变工程技术

  490.4510 磁约束聚变技术   490.4520 惯性约束聚变技术   490.4530 聚变堆工程   490.4540 聚变裂变混合堆工程

  490.4599 核聚变工程技术其他学科

490.50 核动力工程技术

  490.5010 舰船核动力   490.5020 空间核动力   490.5030 核电站   490.5040 核动力运行技术

  490.5099 核动力工程技术其他学科

490.55 同位素技术

  490.5510 同位素分离技术   490.5520 同位素制备技术   490.5530 同位素应用技术   490.5599 同位素技术其他学科

490.60 核爆炸工程

490.65 核安全(包括核电站安全)

490.70 乏燃料后处理技术

490.75 辐射防护技术

490.80 核设施退役技术

490.85 放射性三废处理、处置技术

490.99 核科学技术其他学科  

510 电子、通信与自动控制技术
510.10 电子技术

  510.1010 电子电路   510.1015 天线电波传播   510.1020 无线电技术   510.1025 微波技术

  510.1030 敏感电子学   510.1035 微电子学   510.1040 仿真技术   510.1045 超导电子技术

  510.1050 电子元件与器件技术   510.1055 电子束、离子束技术   510.1060 红外与夜视技术   510.1099 电子技术其他学科

510.20 光电子学与激光技术

510.30 半导体技术

  510.3010 半导体测试技术   510.3020 半导体材料   510.3030 半导体器件与技术   510.3040 集成电路技术

  510.3050 半导体加工技术   510.3099 半导体技术其他学科

510.40 信息处理技术

  510.4010 信号检测   510.4020 参数估计   510.4030 数据处理   510.4040 语音处理

  510.4050 图象处理   510.4099 信息处理技术其他学科

510.50 通信技术

  510.5010 有线通信技术   510.5015 无线通信技术(包括微波通信、卫星通信等)   510.5020 光纤通信技术

  510.5025 通信传输技术   510.5030 通信网络技术   510.5035 通信终端技术   510.5040 电信   510.5045 邮政

  510.5050 邮电通信管理工程   510.5099 通信技术其他学科

510.60 广播与电视工程技术

510.70 雷达工程

510.80 自动控制技术

  510.8010 自动控制理论(包括线性、非线性、随机控制,最优控制、自适应控制系统、分布式控制系统、柔性控制系统等)

  510.8020 控制系统仿真技术   510.8030 机电一体化技术   510.8040 自动化仪器仪表与装置   510.8050 机器人控制

  510.8060 自动化技术应用   510.8099 自动控制技术其他学科

510.99 电子、通信与自动控制技术其他学科  

520 计算机科学技术
520.10 计算机科学技术基础学科

  520.1010 自动机理论   520.1020 可计算性理论   520.1030 计算机可靠性理论   520.1040 算法理论

  520.1050 数据结构   520.1060 数据安全与计算机安全   520.1099 计算机科学技术基础学科其他学科

520.20 人工智能

  520.2010 人工智能理论   520.2020 自然语言处理   520.2030 机器翻译   520.2040 模式识别

  520.2050 计算机感知   520.2060 计算机神经网络   520.2070 知识工程(包括专家系统)   520.2099 人工智能其他学科

520.30 计算机系统结构

  520.3010 计算机系统设计   520.3020 并行处理   520.3030 分布式处理系统   520.3040 计算机网络

  520.3050 计算机运行测试与性能评价   520.3099 计算机系统结构其他学科

520.40 计算机软件

  520.4010 软件理论   520.4020 操作系统与操作环境   520.4030 程序设计及其语言   520.4040 编译系统

  520.4050 数据库   520.4060 软件开发环境与开发技术   520.4070 软件工程   520.4099 计算机软件其他学科

'520.50 计算机工程

  520.5010 计算机元器件   520.5020 计算机处理器技术   520.5030 计算机存储技术   520.5040 计算机外围设备

  520.5050 计算机制造与检测   520.5060 计算机高密度组装技术   520.5099 计算机工程其他学科

520.60 计算机应用

  520.6010 中国语言文字信息处理(包括汉字信息处理)   520.6020 计算机仿真   520.6030 计算机图形学

  520.6040 计算机图象处理   520.6050 计算机辅助设计   520.6060 计算机过程控制

  520.6070 计算机信息管理系统   520.6080 计算机决策支持系统   520.6099 计算机应用其他学科

520.99 计算机科学技术其他学科  

530 化学工程
530.11 化学工程基础学科

  530.1110 化工热力学   530.1120 化工流体力学   530.1130 化工流变学   530.1140 颗粒学

  530.1199 化学工程基础学科其他学科

530.14 化工测量技术与仪器仪表

530.17 化工传递过程

530.21 化学分离工程

  530.2110 蒸馏   530.2120 吸收   530.2130 萃取   530.2140 吸附与离子交换

  530.2150 膜分离   530.2160 蒸发与结晶   530.2170 干燥   530.2199 化学分离工程其他学科

530.24 化学反应工程

  530.2410 催化反应工程   530.2420 催化剂工程   530.2430 固定床反应工程   530.2440 多相流反应工程

  530.2450 生化反应工程   530.2460 聚合化学反应工程   530.2470 电化学反应工程   530.2499 化学反应工程其他学科

530.27 化工系统工程

  530.2710 化工过程动态学   530.2720 化工过程控制与模拟   530.2730 化工系统优化   530.2799 化工系统工程其他学科

530.31 化工机械与设备

530.34 无机化学工程

  530.3410 酸碱盐工程技术   530.3420 硅酸盐工程技术   530.3430 放射化工   530.3440 化肥工程技术

  530.3450 化学冶金   530.3499 无机化学工程其他学科

530.37 有机化学工程

530.41 电化学工程

  530.4110 电解   530.4120 电镀   530.4130 电池   530.4140 腐蚀与防腐化学

  530.4199 电化学工程其他学科

530.44 高聚物工程

530.47 煤化学工程

530.51 石油化学工程

530.54 精细化学工程

  530.5410 表面活性剂   530.5420 香料学   530.5430 化妆品学   530.5440 染料

  530.5450 颜料与涂料学   530.5460 粘合剂(亦称胶粘剂)   530.5499 精细化学工程其他学科

530.57 造纸技术

530.61 毛皮与制革工程

530.64 制药工程

  530.6410 医药工程   530.6420 农药工程   530.6430 兽药工程   530.6499 制药工程其他学科

530.67 生物化学工程

530.99 化学工程其他学科  

540 纺织科学技术
540.10 纺织科学技术基础学科

  540.1010 纺织化学   540.1020 纺织美学与色彩学   540.1099 纺织科学技术基础学科其他学科

540.20 纺织材料

540.30 纤维制造技术

540.40 纺织技术

  540.4010 纺织品结构与设计   540.4015 棉纺学   540.4020 棉织学   540.4025 麻纺织

  540.4030 毛纺织   540.4035 丝纺织   540.4040 化学纤维纺织   540.4045 新型纺纱、无纺布与特种织物

  540.4050 针织   540.4099 纺织技术其他学科

540.50 染整技术

  540.5010 染炼技术   540.5020 印花技术   540.5030 染色技术   540.5040 整理技术

  540.5099 染整技术其他学科

540.60 服装技术

  540.6010 服装设计   540.6020 服装加工   540.6099 服装技术其他学科

540.70 纺织机械与设备

  540.7010 纺织器材设计与制造   540.7020 纺织机械设计与制造   540.7099 纺织机械与设备其他学科

540.99 纺织科学技术其他学科  

550 食品科学技术
550.10 食品科学技术基础学科

  550.1010 食品生物化学   550.1020 食品营养学   550.1030 食品检验学   550.1099 食品科学技术基础学科其他学科

550.20 食品加工技术

  550.2010 食用油脂加工技术   550.2015 制糖技术   550.2020 肉加工技术   550.2025 乳加工技术

  550.2030 蛋加工技术   550.2035 水果、蔬菜加工技术   550.2040 食品发酵与酿造技术   550.2045 食品焙烤加工技术

  550.2050 调味品加工技术(包括食盐加工技术等)   550.2055 食品添加剂技术   550.2060 饮料冷食制造技术   550.2065 罐头技术

  550.2099 食品加工技术其他学科

550.30 食品包装与储藏

550.40 食品机械

550.50 食品加工的副产品加工与利用

550.60 食品工业企业管理学

550.99 食品科学技术其他学科  

560 土木建筑工程
560.10 建筑史

560.15 土木建筑工程基础学科

  560.1510 建筑光学   560.1520 建筑声学   560.1530 建筑气象学   560.1599 土木建筑工程基础学科其他学科

560.20 土木建筑工程测量

560.25 建筑材料

  560.2510 金属建筑材料   560.2520 非金属建筑材料   560.2530 复合建筑材料

  560.2540 特种建筑材料(包括隔音、防水、防火、绝热、耐震、防蚀、装修材料等)   560.2599 建筑材料其他学科

560.30 工程结构

  560.3010 杆件结构   560.3020 薄壳结构   560.3030 悬索与张拉结构   560.3040 实体结构

  560.3050 结构设计   560.3099 工程结构其他学科

560.35 土木建筑结构

  560.3510 木结构   560.3520 砖结构   560.3530 金属结构   560.3540 混凝土与钢筋混凝土结构

  560.3550 喷锚结构   560.3560 复合结构   560.3570 特种结构   560.3599 土木建筑结构其他学科

560.40 土木建筑工程设计

  560.4010 建筑设计方法与理论   560.4020 城乡规划方法与理论   560.4030 建筑美学   560.4040 建筑室内设计

  560.4050 建筑室外环境设计   560.4060 土木工程设计   560.4099 土木建筑工程设计其他学科

560.45 土木建筑工程施工

  560.4510 地基基础工程   560.4520 地面工程   560.4530 地下工程   560.4540 墙体工程

  560.4550 土木施工电器工程   560.4560 装饰工程   560.4599 土木建筑工程施工其他学科

560.50 土木工程机械与设备

  560.5010 起重机械   560.5020 土木工程运输机械   560.5030 土方机械   560.5040 桩工机械

  560.5050 石料开采加工机械   560.5060 钢筋混凝土机械   560.5070 装修机械   560.5099 土木工程机械与设备其他学科

560.55 市政工程

  560.5510 城市给水排水工程   560.5520 通风与空调工程   560.5530 供热与供燃气工程   560.5540 电讯管道工程

  560.5550 城市系统工程   560.5599 市政工程其他学科

560.60 建筑经济学

560.99 土木建筑工程其他学科  

570 水利工程
570.10 水利工程基础学科

  570.1010 水力学   570.1020 河流与海岸动力学   570.1099 水利工程基础学科其他学科

570.15 水利工程测量

570.20 水工材料

570.25 水工结构(亦称水工建筑物)

  570.2510 一般水工建筑物   570.2520 专门水工建筑物   570.2599 水工结构其他学科

570.30 水力机械

570.35 水利工程施工

  570.3510 水利建筑工程施工   570.3520 水工设备安装(包括水工金属结构安装等)   570.3599 水利工程施工其他学科

570.40 水处理(不包括废水处理)

  570.4010 给水处理   570.4099 水处理其他学科

570.45 河流泥沙工程学

  570.4510 水沙动力学   570.4520 河工学   570.4599 河流泥沙工程学其他学科

570.50 海洋工程

  570.5010 海洋工程结构与施工   570.5020 海底矿产开发   570.5030 海水资源利用   570.5040 海洋环境工程

  570.5099 海洋工程其他学科

570.55 环境水利

  570.5510 环境水利与评价   570.5520 区域环境水利   570.5530 水资源保护   570.5599 环境水利其他学科

570.60 水利管理

  570.6010 水利工程管理(包括水利调度、水利施工管理、养护等)   570.6020 水利工程检查观测

  570.6030 水利管理自动化系统   570.6099 水利管理其他学科

570.65 防洪工程

  570.6510 防洪   570.6520 防汛   570.6530 防凌   570.6599 防洪工程其他学科

570.70 水利经济学

570.99 水利工程其他学科  

580 交通运输工程
580.10 道路工程

  580.1010 路基工程   580.1020 桥涵工程   580.1030 隧道工程   580.1099 道路工程其他学科

580.20 公路运输

  580.2010 车辆工程   580.2020 公路标志、信号、监控工程   580.2030 公路运输管理   580.2099 公路运输其他学科

580.30 铁路运输

  580.3010 铁路电气化工程   580.3020 铁路通信信号工程   580.3030 铁路机车车辆工程   580.3040 铁路运输管理

  580.3099 铁路运输其他学科

580.40 水路运输

  580.4010 航海学   580.4020 导航建筑物与航标工程   580.4030 航道工程   580.4040 港口工程

  580.4050 疏浚工程   580.4060 水路运输管理   580.4099 水路运输其他学科

580.50 船舶、舰船工程

580.60 航空运输

  580.6010 机场工程   580.6020 航空运输管理   580.6099 航空运输其他学科

580.70 交通运输系统工程

580.80 交通运输安全工程

580.99 交通运输工程其他学科  

590 航空、航天科学技术
590.10 航空、航天科学技术基础学科

  590.1010 大气层飞行力学   590.1020 航天动力学   590.1030 飞行器结构力学   590.1040 飞行原理

  590.1099 航空、航天科学技术基础学科其他学科

590.15 航空器结构与设计

  590.1510 气球、飞艇   590.1520 定翼机   590.1530 旋翼机   590.1599 航空器结构与设计其他学科

590.20 航天器结构与设计

  590.2010 火箭、导弹   590.2020 人造地球卫星   590.2030 空间探测器   590.2040 宇宙飞船

  590.2050 航天站   590.2060 航天飞机   590.2099 航天器结构与设计其他学科

590.25 航空、航天推进系统

590.30 飞行器仪表、设备

590.35 飞行器控制、导航技术

590.40 航空、航天材料

  590.4010 航空、航天金属材料   590.4020 航空、航天非金属材料   590.4030 航空、航天复合材料   590.4040 航空、航天燃料与润滑剂

  590.4099 航空、航天材料其他学科

590.45 飞行器制造技术

  590.4510 航空器制造工艺   590.4520 航天器制造工艺   590.4599 飞行器制造技术其他学科

590.50 飞行器试验技术

  590.5010 航空器地面试验   590.5020 航空器飞行试验   590.5030 航天器地面试验   590.5040 航天器飞行试验

  590.5099 飞行器试验技术其他学科

590.55 飞行器发射、飞行技术

  590.5510 飞行技术   590.5520 飞行器发射、飞行事故   590.5599 飞行器发射、飞行技术其他学科

590.60 航天地面设施、技术保障

  590.6010 发射场、试验场   590.6020 航天测控系统   590.6099 航天地面设施、技术保障其他学科

590.65 航空、航天系统工程

  590.6510 航空系统工程   590.6520 航天系统工程   590.6530 航空、航天可靠性工程   590.6599 航空、航天系统工程其他学科

590.99 航空、航天科学技术其他学科  

610 环境科学技术
610.10 环境科学技术基础学科

  610.1010 环境物理学(包括环境声学等)   610.1015 环境化学   610.1020 环境生物学   610.1025 环境气象学

  610.1030 环境地学(包括环境地球化学、环境地质学等)   610.1035 环境生态学   610.1040 环境毒理学   610.1045 自然环境保护学

  610.1050 环境管理学   610.1099 环境科学技术基础学科其他学科

610.20 环境学

  610.2010 大气环境学   610.2020 水体环境学(包括海洋环境学)   610.2030 土壤环境学   610.2040 区域环境学

  610.2099 环境学其他学科

610.30 环境工程学

  610.3010 环境保护工程   610.3015 大气污染防治工程   610.3020 水污染防治工程   610.3025 固体污染防治工程

  610.3030 三废处理与综合利用   610.3035 噪声与震动控制   610.3040 环境质量监测与评价   610.3045 环境规划

  610.3050 环境系统工程   610.3099 环境工程学其他学科

610.99 环境科学技术其他学科  

620 安全科学技术
620.10 安全科学技术基础学科

  620.1010 灾害物理学   620.1020 灾害化学   620.1030 灾害学   620.1040 灾害毒理学

  620.1099 安全科学技术基础学科其他学科

620.20 安全学

  620.2010 安全系统学   620.2020 安全心理学   620.2030 安全模拟与安全仿真学   620.2040 安全人机学

  620.2050 安全经济学   620.2060 安全管理学   620.2070 安全教育学   620.2099 安全学其他学科

620.30 安全工程

  620.3010 消防工程   620.3020 爆炸安全工程   620.3030 安全设备工程   620.3040 安全电气工程

  620.3050 部门安全工程   620.3099 安全工程其他学科

620.40 职业卫生工程

  620.4010 防尘工程   620.4020 防毒工程   620.4030 生产噪声与振动控制   620.4040 个体防护

  620.4099 职业卫生工程其他学科

620.50 安全管理工程

  620.5010 安全信息工程   620.5020 风险评价与失效分析   620.5030 工业灾害控制   620.5040 安全检测与监控技术

  620.5099 安全管理工程其他学科

620.99 安全科学技术其他学科  

630 管理学
630.10 管理思想史

630.15 管理理论

  630.1510 管理哲学   630.1520 组织理论   630.1530 行为科学   630.1540 决策理论

  630.1550 系统管理理论   630.1599 管理理论其他学科

630.20 管理心理学

630.25 管理计量学

630.30 部门经济管理

630.35 科学学与科技管理

  630.3510 科学社会学   630.3520 科技政策学   630.3530 科学心理学   630.3540 科学计量学

  630.3550 科技管理学   630.3599 科学学与科技管理其他学科

630.40 企业管理

  630.4010 生产管理   630.4015 经营管理   630.4020 财务管理   630.4025 成本管理

  630.4030 劳动人事管理   630.4035 技术管理   630.4040 营销管理   630.4045 物资管理

  630.4050 设备管理   630.4055 质量管理   630.4099 企业管理其他学科

630.45 行政管理

630.50 管理工程

  630.5010 生产系统管理   630.5015 研究与开发管理   630.5020 质量控制与可靠性管理   630.5025 物流系统管理

  630.5030 战略管理   630.5035 决策分析   630.5040 决策支持系统   630.5045 管理信息系统

  630.5050 管理系统仿真   630.5055 工效学   630.5060 部门管理工程   630.5099 管理工程其他学科

630.55 人力资源开发与管理

  630.5510 人力资源开发战略   630.5520 人才学   630.5599 人力资源开发与管理其他学科

630.60 未来学

  630.6010 理论预测学   630.6020 预测评价学   630.6030 技术评估学   630.6040 全球未来学

  630.6099 未来学其他学科

630.99 管理学其他学科  

710 马克思主义
710.10 马、恩、列、斯思想研究

710.20 毛泽东思想研究

710.30 马克思主义思想史

710.40 科学社会主义

710.50 社会主义运动史(包括国际共产主义运动)

710.60 国外马克思主义研究

710.99 马克思主义其他学科  

720 哲学
720.10 马克思主义哲学

  720.1010 辩证唯物主义   720.1020 历史唯物主义   720.1030 马克思主义哲学史   720.1099 马克思主义哲学其他学科

720.15 自然辩证法(亦称科学技术哲学)

  720.1510 自然观   720.1520 科学哲学   720.1530 技术哲学

  720.1540 专门自然科学哲学(包括人工智能哲学、数学哲学、物理哲学等)   720.1599 自然辩证法其他学科

720.20 中国哲学史

  720.2010 先秦哲学   720.2020 秦汉哲学   720.2030 魏晋南北朝哲学   720.2040 隋唐五代哲学

  720.2050 宋元明清哲学   720.2060 中国近代哲学   720.2070 中国现代哲学   720.2080 中国少数民族哲学思想

  720.2099 中国哲学史其他学科

720.25 东方哲学史

  720.2510 印度哲学   720.2520 伊斯兰哲学   720.2530 日本哲学   720.2599 东方哲学史其他学科

720.30 西方哲学史

  720.3010 古希腊罗马哲学   720.3020 中世纪哲学   720.3030 文艺复兴时期哲学   720.3040 十七、十八世纪欧洲哲学

  720.3050 德国古典哲学   720.3060 俄国哲学(包括俄国革命民主主义者的哲学)   720.3099 西方哲学史其他学科

720.35 现代外国哲学

  720.3510 十九世纪末至二十世纪中叶西方哲学   720.3520 分析哲学   720.3530 欧洲大陆人文哲学

  720.3540 解释学   720.3550 符号学   720.3560 实用主义哲学   720.3599 现代外国哲学其他学科

720.40 逻辑学

  720.4010 逻辑史(包括中国逻辑史、西方逻辑史、印度逻辑史等)   720.4020 形式逻辑(亦称传统逻辑)

  720.4030 哲理逻辑(包括模态、多值、构造、时态、模糊逻辑等)   720.4040 语言逻辑   720.4050 归纳逻辑   720.4060 辩证逻辑

  720.4099 逻辑学其他学科

720.45 伦理学

  720.4510 伦理学原理   720.4515 中国伦理思想史   720.4520 东方伦理思想史   720.4525 西方伦理思想史

  720.4530 马克思主义伦理思想史   720.4535 职业伦理学   720.4540 医学伦理学   720.4545 教育伦理学

  720.4550 政治伦理学   720.4555 家庭伦理学   720.4560 生命伦理学   720.4565 生态伦理学

  720.4599 伦理学其他学科

720.50 美学

  720.5010 美学原理   720.5020 中国美学史   720.5030 东方美学史   720.5040 西方美学史

  720.5050 西方现代美学   720.5060 马克思主义美学   720.5070 艺术美学(包括音乐、影视美学、建筑美学等)

  720.5080 技术美学   720.5099 美学其他学科

720.99 哲学其他学科  

730 宗教学
730.11 宗教学理论

  730.1110 马克思主义宗教学   730.1115 宗教史学   730.1120 宗教哲学   730.1125 宗教社会学

  730.1130 宗教心理学   730.1135 比较宗教学   730.1140 宗教地理学   730.1145 宗教文学艺术

  730.1150 宗教文献学   730.1155 神话学   730.1199 宗教学理论其他学科

730.14 无神论

  730.1410 无神论史   730.1420 中国无神论   730.1430 外国无神论   730.1499 无神论其他学科

730.17 原始宗教

730.21 古代宗教

  730.2110 中国古代宗教   730.2120 外国古代宗教   730.2199 古代宗教其他学科

730.24 佛教

  730.2410 佛教哲学   730.2420 佛教因明   730.2430 佛教艺术   730.2440 佛教文献

  730.2450 佛教史   730.2499 佛教其他学科

730.27 基督教

  730.2710 圣经学   730.2720 基督教哲学   730.2730 基督教伦理学   730.2740 基督教史

  730.2750 基督教艺术   730.2799 基督教其他学科

730.31 伊斯兰教

  730.3110 伊斯兰教义学   730.3120 伊斯兰教法学   730.3130 伊斯兰教哲学   730.3140 古兰学

  730.3150 圣训学   730.3160 伊斯兰教史   730.3170 伊斯兰教艺术   730.3199 伊斯兰教其他学科

730.34 道教

  730.3410 道教哲学   730.3420 道教文献   730.3430 道教艺术   730.3440 道教史

  730.3499 道教其他学科

730.37 印度教

730.41 犹太教

730.44 祆教

730.47 摩尼教

730.51 锡克教

730.54 耆那教

730.57 神道教

730.61 中国民间宗教与民间信仰

730.64 中国少数民族宗教

730.67 当代宗教

  730.6710 中国当代宗教   730.6720 世界当代宗教   730.6730 新兴宗教   730.6799 当代宗教其他学科

730.99 宗教学其他学科  

740 语言学
740.10 普通语言学

  740.1010 语音学   740.1015 语法学   740.1020 语义学   740.1025 词汇学

  740.1030 语用学   740.1035 方言学   740.1040 修辞学   740.1045 文字学

  740.1050 语源学   740.1099 普通语言学其他学科

740.15 比较语言学

  740.1510 历史比较语言学   740.1520 类型比较语言学   740.1530 双语对比语言学   740.1599 比较语言学其他学科

740.20 语言地理学

740.25 社会语言学

740.30 心理语言学

740.35 应用语言学

  740.3510 语言教学   740.3520 话语语言学   740.3530 实验语音学   740.3540 数理语言学

  740.3550 计算语言学   740.3560 翻译学   740.3599 应用语言学其他学科

740.40 汉语研究

  740.4010 普通话   740.4015 汉语方言   740.4020 汉语语音   740.4025 汉语音韵

  740.4030 汉语语法   740.4035 汉语词汇   740.4040 汉语训诂   740.4045 汉语修辞

  740.4050 汉字规范   740.4055 汉语史   740.4099 汉语研究其他学科

740.45 中国少数民族语言文字

  740.4510 蒙古语文   740.4515 藏语文   740.4520 维吾尔语文   740.4525 哈萨克语文

  740.4530 满语文   740.4535 朝鲜语文   740.4540 傣族语文   740.4545 彝族语文

  740.4550 壮语文   740.4555 苗语文   740.4560 瑶语文   740.4565 柯尔克孜语文

  740.4570 锡伯语文   740.4599 中国少数民族语言文字其他学科

740.50 外国语言

  740.5011 英语   740.5014 德语   740.5017 瑞典语   740.5021 意大利语

  740.5024 法语   740.5027 西班牙语、葡萄牙语   740.5031 罗马尼亚语   740.5034 俄语

  740.5037 波兰语、捷克语   740.5041 塞尔维亚语、保加利亚语   740.5044 希腊语   740.5047 阿尔巴尼亚语

  740.5051 匈牙利语   740.5054 梵语、印地语、乌尔都语、僧伽罗语   740.5057 波斯语

  740.5061 土耳其语   740.5064 阿拉伯语   740.5067 希伯莱语   740.5071 豪萨语

  740.5074 斯瓦希里语   740.5077 越南语、柬埔寨语   740.5081 印度尼西亚语、菲律宾国语、马来语

  740.5084 缅甸语   740.5087 泰语、老挝语   740.5091 日语   740.5094 世界语

  740.5099 外国语言其他学科

740.99 语言学其他学科  

750 文学
750.11 文学理论

750.14 文艺美学

750.17 文学批评

750.21 比较文学

750.24 中国古代文学史

  750.2410 周秦汉文学   750.2415 魏晋文学   750.2420 南北朝文学   750.2425 隋唐五代文学

  750.2430 宋代文学   750.2435 辽金文学   750.2440 元代文学   750.2445 明代文学

  750.2450 清代文学   750.2499 中国古代文学史其他学科

750.27 中国近代文学史

750.31 中国现代文学史(包括当代文学史)

750.34 中国各体文学

  750.3410 中国诗歌文学   750.3420 中国戏剧文学   750.3430 中国小说文学   750.3440 中国散文文学

  750.3499 中国各体文学其他学科

750.37 中国民间文学

750.41 中国儿童文学

750.44 中国少数民族文学

  750.4410 蒙古族文学   750.4420 藏族文学   750.4430 维吾尔族文学   750.4440 哈萨克族文学

  750.4450 朝鲜族文学   750.4499 中国少数民族文学其他学科

750.47 世界文学史

  750.4710 古代世界文学史   750.4720 中世纪世界文学史   750.4730 近代世界文学史

  750.4740 现代世界文学史(包括当代世界文学史)   750.4799 世界文学史其他学科

750.51 东方文学

  750.5110 印度文学   750.5120 日本文学   750.5199 东方文学其他学科

750.54 俄国文学(包括原苏联文学)

750.57 英国文学

750.61 法国文学

750.64 德国文学

750.67 意大利文学

750.71 美国文学

750.74 北欧文学

750.77 东欧文学

750.81 拉美文学

750.84 非洲文学

750.87 大洋洲文学

750.99 文学其他学科  

760 艺术学
760.10 艺术心理学

760.15 音乐

  760.1510 音乐学(包括音乐史、音乐美学等)   760.1520 作曲与作曲理论   760.1530 音乐表演艺术   760.1599 音乐其他学科

760.20 戏剧

  760.2010 戏剧史   760.2020 戏剧理论   760.2099 戏剧其他学科

760.25 戏曲

  760.2510 戏曲史   760.2520 戏曲理论   760.2530 戏曲表演   760.2599 戏曲其他学科

760.30 舞蹈

  760.3010 舞蹈史   760.3020 舞蹈理论   760.3030 舞蹈编导   760.3040 舞蹈表演

  760.3099 舞蹈其他学科

760.35 电影

  760.3510 电影史   760.3520 电影理论   760.3530 电影艺术   760.3599 电影其他学科

760.40 广播电视文艺

760.45 美术

  760.4510 美术史   760.4520 美术理论   760.4530 绘画艺术   760.4540 雕塑艺术

  760.4599 美术其他学科

760.50 工艺美术

  760.5010 工艺美术史   760.5020 工艺美术理论   760.5030 环境艺术   760.5099 工艺美术其他学科

760.55 书法

  760.5510 书法史   760.5520 书法理论   760.5599 书法其他学科

760.60 摄影

  760.6010 摄影史   760.6020 摄影理论   760.6099 摄影其他学科

760.99 艺术学其他学科  

770 历史学
770.10 史学史

770.15 史学理论

770.20 历史文献学

770.25 中国通史

770.30 中国古代史

  770.3010 先秦史   770.3015 秦汉史   770.3020 魏晋南北朝史   770.3025 隋唐五代十国史

  770.3030 宋史   770.3035 辽金史   770.3040 元史   770.3045 明史

  770.3050 清史   770.3055 中国古文字(包括甲骨文、金文等)   770.3060 中国古代契约文书(包括敦煌学、明清契约文书研究、鱼鳞册研究等)

  770.3099 中国古代史其他学科

770.35 中国近代史、现代史

  770.3510 鸦片战争史   770.3515 太平天国史   770.3520 洋务运动史   770.3525 戊戌政变史

  770.3530 义和团运动史   770.3535 辛亥革命史   770.3540 五四运动史   770.3545 新民主主义革命史

  770.3550 中国共产党史   770.3555 中国国民党史   770.3560 中国民主党派史   770.3565 中华民国史

  770.3570 中华人民共和国史   770.3599 中国近代史、现代史其他学科

770.40 世界通史

  770.4010 原始社会史   770.4020 世界古代史   770.4030 世界中世纪史   770.4040 世界近代史

  770.4050 世界现代史   770.4099 世界通史其他学科

770.45 亚洲史

  770.4510 日本史   770.4520 印度史   770.4530 东南亚史   770.4540 南亚史

  770.4550 中亚史   770.4560 西亚史   770.4599 亚洲史其他学科

770.50 非洲史

  770.5010 北非史   770.5020 撒哈拉以南非洲史   770.5030 埃及史   770.5040 南非联邦史

  770.5099 非洲史其他学科

770.55 美洲史

  770.5510 美洲古代文明史   770.5520 美国史   770.5530 加拿大史   770.5540 拉丁美洲史

  770.5599 美洲史其他学科

770.60 欧洲史

  770.6010 俄国史(包括原苏联史)   770.6020 英国史   770.6030 法国史   770.6040 德国史

  770.6050 意大利史   770.6060 西班牙史   770.6070 东欧国家史   770.6080 北欧国家史

  770.6099 欧洲史其他学科

770.65 澳洲、大洋洲史

770.70 专门史

  770.7010 政治史   770.7015 思想史   770.7020 文化史   770.7025 科技史

  770.7030 社会史   770.7035 城市史   770.7040 中外文化交流史   770.7045 历史地理学

  770.7050 方志学   770.7055 人物研究   770.7060 谱牒学   770.7099 专门史其他学科

770.99 历史学其他学科  

780 考古学
780.10 考古理论

780.20 考古学史

780.30 考古技术

  780.3010 考古发掘   780.3020 考古修复   780.3030 考古年代测定   780.3099 考古技术其他学科

780.40 中国考古

  780.4010 旧石器时代考古   780.4020 新石器时代考古   780.4030 商周考古   780.4040 秦汉考古

  780.4050 三国两晋、南北朝、隋唐考古   780.4060 宋元明考古   780.4099 中国考古其他学科

780.50 外国考古

  780.5010 亚洲考古   780.5020 欧洲考古   780.5030 非洲考古   780.5040 美洲考古

  780.5050 大洋洲考古   780.5099 外国考古其他学科

780.60 专门考古

  780.6010 金石学   780.6020 铭刻学   780.6030 甲骨学   780.6040 古钱学

  780.6050 美术考古   780.6060 宗教考古   780.6070 水下考古   780.6099 专门考古其他学科

780.99 考古学其他学科  

790 经济学
790.11 政治经济学

  790.1110 资本主义政治经济学   790.1120 社会主义政治经济学   790.1199 政治经济学其他学科

790.13 宏观经济学

790.15 微观经济学

790.17 比较经济学

790.19 经济地理学(包括工业地理学、农业地理学等)

790.21 发展经济学

790.23 生产力经济学

790.25 经济思想史

  790.2510 中国经济思想史   790.2520 外国经济思想史   790.2530 马克思主义经济思想史   790.2599 经济思想史其他学科

790.27 经济史

  790.2710 世界经济史   790.2720 中国经济史   790.2799 经济史其他学科

790.29 世界经济学(亦称国际经济学)

  790.2911 国际经济关系   790.2914 国际贸易学(包括国际市场营销学、国际商品学)   790.2917 国际货币经济学

  790.2921 国际金融学   790.2924 国际投资学   790.2927 国际收支理论   790.2931 美国经济

  790.2934 日本经济   790.2937 德国经济   790.2941 法国经济   790.2944 英国经济

  790.2947 俄罗斯经济   790.2951 欧洲经济   790.2954 北美经济   790.2957 亚太经济

  790.2961 拉美经济   790.2964 非洲经济   790.2967 中亚、西亚经济   790.2971 世界经济统计

  790.2999 世界经济学其他学科

790.31 国民经济学

  790.3110 国民经济计划学   790.3120 区域经济学   790.3130 消费经济学   790.3140 投资经济学

  790.3199 国民经济学其他学科

790.33 管理经济学

790.35 数量经济学

  790.3510 数理经济学   790.3520 经济计量学   790.3599 数量经济学其他学科

790.37 会计学

  790.3710 工业会计学   790.3720 农业会计学   790.3730 商业会计学   790.3740 银行会计学

  790.3750 交通运输会计学   790.3799 会计学其他学科

790.39 审计学

790.41 技术经济学

  790.4110 工程经济学   790.4115 工业技术经济学   790.4120 农业技术经济学   790.4125 能源技术经济学

  790.4130 交通运输技术经济学   790.4135 建筑技术经济学   790.4140 商业与物流技术经济学   790.4145 技术进步经济学

  790.4150 资源开发利用技术经济学   790.4155 环境保护技术经济学   790.4160 生产力布局技术经济学   790.4165 消费技术经济学

  790.4199 技术经济学其他学科

790.43 生态经济学

  790.4310 森林生态经济学   790.4320 草原生态经济学   790.4330 水域生态经济学   790.4340 城市生态经济学

  790.4350 区域生态经济学   790.4399 生态经济学其他学科

790.45 劳动经济学

  790.4510 就业经济学(包括劳动市场经济学)   790.4520 劳动管理学   790.4530 劳动统计学   790.4540 劳动社会学

  790.4550 劳动心理学   790.4560 劳动经济史   790.4599 劳动经济学其他学科

790.47 城市经济学

  790.4710 城市经济管理学   790.4720 城市土地经济学   790.4730 市政经济学   790.4740 住宅经济学

  790.4750 城郊经济学   790.4799 城市经济学其他学科

790.49 资源经济学

  790.4910 海洋资源经济学   790.4920 生物资源经济学   790.4930 矿产资源经济学   790.4940 能源经济学

  790.4950 资源开发与利用   790.4999 资源经济学其他学科

790.51 环境经济学

790.53 物资经济学

  790.5310 物资经济理论   790.5320 物资管理学   790.5399 物资经济学其他学科

790.55 工业经济学

  790.5510 工业发展经济学   790.5520 工业企业经营管理学   790.5530 工业经济地理   790.5540 工业部门经济学

  790.5550 工业经济史   790.5599 工业经济学其他学科

790.57 农村经济学

  790.5710 农村宏观经济学   790.5720 农村产业经济学   790.5730 农村区域经济学   790.5799 农村经济学其他学科

790.59 农业经济学

  790.5910 农业生态经济学   790.5920 农业生产经济学   790.5930 土地经济学(包括国土经济学、农业资源经济学等)

  790.5940 农业经济史   790.5950 农业企业经营管理   790.5960 合作经济

  790.5970 世界农业经济   790.5980 种植业经济学   790.5999 农业经济学其他学科

790.61 交通运输经济学

  790.6110 城市运输经济学   790.6120 铁路运输经济学   790.6130 航空运输经济学   790.6140 公路运输经济学

  790.6150 水路运输经济学   790.6160 综合运输经济学   790.6199 交通运输经济学其他学科

790.63 商业经济学

  790.6310 商业经济学原理   790.6315 商业企业管理学   790.6320 商品流通经济学   790.6325 市场学

  790.6330 商业心理学   790.6335 商业社会学   790.6340 商品学(包括商品包装与技术)   790.6345 商业物流学

  790.6350 商业经济史   790.6355 广告学   790.6360 服务经济学   790.6399 商业经济学其他学科

790.65 价格学

  790.6510 价格学原理   790.6520 部门价格学   790.6530 广义价格学   790.6540 成本管理学

  790.6550 价格史   790.6560 比较价格学   790.6599 价格学其他学科

790.67 旅游经济学

  790.6710 旅游经济学理论   790.6720 旅游经济管理学   790.6730 旅游企业管理学   790.6740 旅游事业史

  790.6799 旅游经济学其他学科

790.69 信息经济学

790.71 财政学

  790.7110 理论财政学   790.7120 资本主义财政学   790.7130 社会主义财政学   790.7140 比较财政学

  790.7150 财政思想史   790.7160 财政史   790.7170 财政管理学   790.7180 税务管理学

  790.7199 财政学其他学科

790.73 货币银行学

  790.7310 货币理论   790.7315 货币学说史   790.7320 银行学   790.7325 银行经营管理学

  790.7330 信贷理论   790.7335 投资理论   790.7340 金融市场   790.7345 农村金融学

  790.7350 金融史、银行史   790.7399 货币银行学其他学科

790.75 保险学

  790.7510 保险管理   790.7599 保险学其他学科

790.77 国防经济学

790.99 经济学其他学科  

810 政治学
810.10 政治学理论

  810.1010 比较政治学   810.1020 政治社会学   810.1030 政治心理学   810.1040 地缘政治学

  810.1050 中外政治学说史   810.1099 政治学理论其他学科

810.20 政治制度

  810.2010 政治制度理论   810.2015 议会制度   810.2020 行政制度   810.2025 司法制度

  810.2030 政党制度   810.2035 选举制度   810.2040 中国政治制度   810.2045 外国政治制度

  810.2050 比较政治制度   810.2055 中国政治制度史   810.2060 外国政治制度史   810.2099 政治制度其他学科

810.30 行政学

  810.3010 行政理论   810.3020 行政组织   810.3030 人事行政   810.3040 财务行政

  810.3050 行政决策   810.3099 行政学其他学科

810.40 国际政治学

  810.4011 国际关系理论   810.4014 国际关系史   810.4017 国际组织   810.4021 外交学

  810.4024 外交史   810.4027 国际比较政治   810.4031 美国政治   810.4034 英国政治

  810.4037 法国政治   810.4041 德国政治   810.4044 日本政治   810.4047 俄罗斯政治

  810.4051 欧洲政治   810.4054 北美政治   810.4057 亚太政治   810.4061 拉美政治

  810.4064 非洲政治   810.4067 中亚、西亚政治   810.4099 国际政治学其他学科

810.99 政治学其他学科  

820 法学
820.10 理论法学

  820.1010 法理学   820.1020 法哲学   820.1030 比较法学   820.1040 法社会学

  820.1050 立法学   820.1060 法律逻辑学   820.1070 法律教育学   820.1080 法律心理学(包括犯罪心理学)

  820.1099 理论法学其他学科

820.20 法律史学

  820.2010 中国法律思想史   820.2020 外国法律思想史   820.2030 法律制度史   820.2099 法律史学其他学科

820.30 部门法学

  820.3010 宪法学   820.3015 行政法学   820.3020 民法学   820.3025 经济法学

  820.3030 劳动法学   820.3035 婚姻法学   820.3040 民事诉讼法学   820.3045 行政诉讼法学

  820.3050 刑事诉讼法学   820.3055 刑法学   820.3060 刑事侦查学   820.3065 司法鉴定学

  820.3070 军事法学   820.3075 环境法学   820.3080 安全法学   820.3085 知识产权法学

  820.3099 部门法学其他学科

820.40 国际法学

  820.4010 国际公法学   820.4020 国际私法学   820.4030 国际刑法学   820.4040 国际经济法学

  820.4050 国际环境法学   820.4060 国际知识产权法学   820.4099 国际法学其他学科

820.99 法学其他学科

830 军事学
830.10 军事理论

  830.1010 马、恩、列、斯军事理论   830.1020 毛泽东军事思想   830.1099 军事理论其他学科

830.15 军事史

  830.1510 中国古代战争史   830.1520 中国近代战争史   830.1530 中国现代战争史   830.1540 世界战争史

  830.1550 军事思想史   830.1560 军事技术史   830.1599 军事史其他学科

830.20 军事心理学

830.25 战略学

  830.2510 战略学理论   830.2520 核战略学   830.2599 战略学其他学科

830.30 战役学

  830.3010 合同战役学   830.3020 海军战役学   830.3030 空军战役学   830.3040 导弹部队战役学

  830.3050 陆军战役学(包括炮兵战役学、装甲兵战役学)   830.3099 战役学其他学科

830.35 战术学

  830.3510 合同战术学   830.3520 陆军战术学(包括炮兵战术学、装甲兵战术学、工程兵战术学、通信兵战术学、防化兵战术学等)

  830.3530 海军战术学   830.3540 空军战术学   830.3550 导弹部队战术学   830.3599 战术学其他学科

830.40 军队指挥学

  830.4010 作战指挥   830.4020 军事系统工程(亦称军事运筹学)   830.4030 军事通信学

  830.4040 军事情报学   830.4050 密码学   830.4099 军队指挥学其他学科

830.45 军制学

  830.4510 军事组织体制   830.4520 军事装备学   830.4530 军队管理学   830.4599 军制学其他学科

830.50 军队政治工作学

  830.5010 军队思想教育工作学   830.5020 军队组织工作学   830.5099 军队政治工作学其他学科

830.55 军事后勤学

  830.5510 后勤组织指挥   830.5520 后方专业勤务   830.5599 军事后勤学其他学科

830.60 军事地学

  830.6010 中国军事地理   830.6020 世界军事地理   830.6030 军事地形学   830.6040 军事测绘学

  830.6050 军事气象学   830.6060 军事水文学   830.6099 军事地学其他学科

830.65 军事技术

830.99 军事学其他学科

840 社会学
840.11 社会学史

  840.1110 中国社会学史   840.1120 外国社会学史   840.1199 社会学史其他学科

840.14 社会学理论

  840.1410 社会学原理   840.1420 社会思想史   840.1499 社会学理论其他学科

840.17 社会学方法

  840.1710 社会调查方法   840.1799 社会学方法其他学科

840.21 实验社会学

840.24 数理社会学

840.27 应用社会学

  840.2711 职业社会学   840.2714 工业社会学   840.2717 医学社会学   840.2727 城市社会学

  840.2731 农村社会学   840.2734 环境社会学   840.2737 家庭社会学   840.2741 青年社会学

  840.2744 老年社会学   840.2747 犯罪社会学   840.2751 越轨社会学   840.2754 妇女问题研究

  840.2757 种族问题研究   840.2761 社会问题研究   840.2764 社会群体及分层问题研究   840.2767 社区研究

  840.2771 社会保障研究   840.2774 社会工作   840.2799 应用社会学其他学科

840.31 比较社会学

840.34 社会地理学

840.37 文化社会学

  840.3710 艺术社会学   840.3720 知识社会学   840.3730 道德社会学   840.3799 文化社会学其他学科

840.41 历史社会学

840.44 经济社会学

840.47 军事社会学

840.51 社会心理学

  840.5110 社会心理学史   840.5120 社会心理学理论与研究方法   840.5130 实验社会心理学   840.5199 社会心理学其他学科

840.54 公共关系学

840.57 社会人类学

840.61 组织社会学

840.64 发展社会学

840.67 福利社会学

840.71 人口学

  840.7110 人口学原理   840.7115 人口经济学   840.7120 人口社会学(包括老年人口学、妇女人口学、发展人口学等)

  840.7125 人口学说史   840.7130 人口史   840.7135 人口地理学   840.7140 人口生态学

  840.7145 区域人口学   840.7150 人口系统工程   840.7155 人口预测学   840.7160 人口规划学

  840.7165 人口政策学   840.7170 计划生育学   840.7199 人口学其他学科

840.99 社会学其他学科

850 民族学
850.10 民族问题理论

  850.1010 民族问题与民族政策   850.1020 民族关系   850.1030 民族经济   850.1040 民族教育

  850.1050 民族法制   850.1060 民族心理学   850.1070 少数民族政治制度   850.1099 民族问题理论其他学科

850.20 民族史学

  850.2010 民族史   850.2020 民族关系史   850.2099 民族史学其他学科

850.30 蒙古学

850.40 藏学

850.50 文化人类学与民俗学

850.60 世界民族研究

850.99 民族学其他学科

860 新闻学与传播学
860.10 新闻理论

  860.1010 新闻学   860.1015 马克思主义新闻理论   860.1020 西方新闻理论   860.1025 新闻法

  860.1030 舆论学   860.1035 新闻伦理学   860.1040 新闻社会学   860.1045 新闻心理学

  860.1050 比较新闻学   860.1099 新闻理论其他学科

860.20 新闻史

  860.2010 中国新闻事业史   860.2020 世界新闻事业史   860.2030 新闻思想史   860.2099 新闻史其他学科

860.30 新闻业务

  860.3010 新闻采访   860.3020 新闻写作   860.3030 新闻编辑   860.3040 新闻评论

  860.3050 新闻摄影   860.3099 新闻业务其他学科

860.40 新闻事业经营管理

860.50 广播与电视

  860.5010 广播电视史   860.5020 广播电视理论   860.5030 广播电视业务(包括广播电视采访、写作、编辑等)

  860.5040 广播电视播音   860.5099 广播与电视其他学科

860.60 传播学

  860.6010 传播史   860.6020 传播理论   860.6030 传播技术   860.6040 组织传播学

  860.6099 传播学其他学科

860.99 新闻学与传播学其他学科

870 图书馆、情报与文献学
870.10 图书馆学

  870.1010 图书馆学史(包括图书馆事业史)   870.1015 比较图书馆学   870.1020 图书馆社会学

  870.1025 图书馆管理学(包括图书馆统计学、图书馆经济学等)   870.1030 图书馆建筑学   870.1035 图书采访学   870.1040 图书分类学

  870.1045 图书编目学(包括目录组织法、文献著录方法、计算机编目等)   870.1050 目录学(包括普通目录学、专科目录、目录学史等)

  870.1055 图书馆服务学(包括读者心理学、读者咨询学等)   870.1099 图书馆学其他学科

870.20 文献学

  870.2010 文献类型学   870.2020 文献计量学   870.2030 文献检索学   870.2040 图书史

  870.2050 版本学   870.2060 校勘学   870.2099 文献学其他学科

870.30 情报学

  870.3010 情报学史(包括情报事业史)   870.3015 情报社会学   870.3020 比较情报学   870.3025 情报计量学

  870.3030 情报心理学   870.3035 情报管理学   870.3040 情报服务学(包括情报用户研究等)   870.3045 情报经济学

  870.3050 情报检索学(包括情报检索语言等)   870.3055 情报系统理论(包括情报系统分析与设计、情报网络建设理论等)

  870.3060 情报技术   870.3065 科学技术情报学   870.3070 社会科学情报学   870.3099 情报学其他学科

870.40 档案学

  870.4010 档案学史(包括档案事业史)   870.4020 档案管理学   870.4030 档案保护技术学   870.4040 档案编纂学

  870.4099 档案学其他学科

870.50 博物馆学

870.99 图书馆、情报与文献学其他学科

880 教育学
880.11 教育史(包括中国教育史、外国教育史等)

880.14 教育学原理

880.17 教学论

880.21 德育原理

880.24 教育社会学

880.27 教育心理学

880.31 教育经济学

880.34 教育管理学

880.37 比较教育学

880.41 教育技术学

880.44 军事教育学

880.47 学前教育学

880.51 普通教育学(包括初等教育学、中等教育学等)

880.54 高等教育学

880.57 成人教育学

880.61 职业技术教育学

880.64 特殊教育学

880.99 教育学其他学科

890 体育科学
890.10 体育史

890.15 体育理论

890.20 运动生物力学(包括运动解剖学等)

890.25 运动生理学

890.30 运动心理学

890.35 运动生物化学

890.40 体育保健学

890.45 运动训练学

890.50 体育教育学

890.55 武术理论与方法

890.60 体育管理学

890.65 体育经济学

890.99 体育科学其他学科

910 统计学
910.10 统计学史

910.15 理论统计学

  910.1510 统计调查分析理沦   910.1520 统计核算理论   910.1530 统计监督理论   910.1540 统计预测理论

  910.1550 统计逻缉学   910.1599 理论统计学其他学科

910.20 统计法学

910.25 描述统计学

910.30 经济统计学

  910.3010 宏观经济统计学   910.3020 微观经济统计学   910.3099 经济统计学其他学科

910.35 科学技术统计学

910.40 社会统计学

  910.4010 教育统计学   910.4020 文化与体育统计学   910.4030 卫生统计学   910.4040 司法统计学

  910.4050 社会福利与社会保障统计学   910.4060 生活质量统计学   910.4099 社会统计学其他学科

910.45 人口统计学

910.50 环境与生态统计学

  910.5010 自然资源统计学   910.5020 环境统计学   910.5030 生态平衡统计学   910.5099 环境与生态统计学其他学科

910.55 国际统计学

  910.5510 国际标准分类统计学   910.5520 国际核算体系与方法论体系   910.5530 国际比较统计学   910.5599 国际统计学其他学科

910.99 统计学其他学科
工作职责:

1、负责windows桌面应用需求研发,包括但不限于常用功能、即时音视频通讯等模块开发和维护

2、进行相关技术的预研,提出实现方案

任职资格:

1.热爱技术,具备良好的沟通能力

2.具备扎实的计算机基础,熟练使用C/C++(熟练使用C++11者尤佳),熟练掌握基本数据结构和算法

3.熟悉视频技术相关的开源项目,例如 ffmpeg, obs, webrtc 等,有相关经验者优先

4.有看开源代码的习惯,善于运用良好的架构和设计模式,具备封装代码的习惯
岗位职责

- 深入理解产品业务,编写测试用例,并帮助开发完成自测

- 独立承担所负责模块前后端的全部质量责任

- 独立完成所负责模块的移动端自动化脚本

- 独立完成前端性能和后端性能测试任务

- 协助团队共同优化研发测试流程和质量标准

- 与团队成员共同完成团队内部的测试开发工作



任职资格

- 具备3年以上的 Web 端与 App 端实际项目测试经验

- 良好的系统分析和逻辑思维能力

- 良好的沟通能力、表达能力以及协调能力

- 熟悉任意一门高级编程语言

- 熟悉 Selenium 或 Appium 框架

- 有实际的测试工具开发与应用经验

岗位职责:

1、负责自动化运维平台组件功能开发;

2、负责自动化运维平台组件故障修复及运维支持。

任职要求:

1、全日制本科以上学历,三年以上工作经验,计算机类、理工科等相关专业;

2、熟悉svn、git、maven、jenkins、sonarQube等常用持续集成组件;

3、精通java、python、go等一种以上的开发语言,熟练使用spring boot,flask开发框架,具备一定软件系统设计思想,设计模式,算法知识;

4、了解Vue、React等前端开发框架,具备一定的前端开发能力;

5、熟悉Linux系统与网络知识、docker、kubernetes等相关组件;

6、有CI,CD系统开发经验者优先;

7、具备一定的沟通表达能力,抗压能力,快速解决线上问题的能力。
职位描述:

岗位职责

1、负责公司人工智能的前沿技术研发工作,有能力实现关键技术突破。

2、负责推进公司人工智能项目的最终落地,包括:机器学习产品训练、图像识别等;

3、和业务团队深入合作,根据业务方的实际需要及反馈,不断优化业务发展中遇到的人工智能产品和平台架构等问题;

4、培养团队成员,建立内部培训体系,提高团队整体专业技能。



任职要求

1、具有实际深度学习研发背景,熟悉至少一种深度学习框架,如:TensorFlow、Keras、Caffe、Theano、ConvNet、Torch等;

2、掌握Python、 R以及C/C++语言

3、在以下领域有深入的研究:

4、统计机器学习(如深度神经网络、Boosting、图模型、概率统计、最优化方法等)

5、计算机视觉(如图像分割和配准、图像识别理解、目标检测和跟踪、OCR、增强现实、图像质量评价等)

6、熟悉OpenCV、Caffe、Tensorflow等开源软件工具,有实际开发经验者优先;

7、熟悉Hadoop、Spark等大数据平台

8、具备项目推进能力,有带队实现过人工智能产品从实验阶段到最终落地的实际项目和管理经验,有项目成果产出;
AI工程师(NLP)



工作职责



1. 医疗领域的自然语言处理,包括分词、词性标注、命名实体识别、浅层句法分析、依层语法分析

2. 文本数据的向量数、数值化,语义相似度的计算,包括词、短语及整句的级别

3. 文本数据中的关键信息抽取,包括问答对中的提问和回答的关键信息

4. 数据挖掘,包括方案设计、数据模型设计、数据的标准化、数据质量的保证

5. 决策支持系统的模型(知识图谱)和推理引擎的开发,包括方案设计、分类或回归模型的创建、调优、上线

6. 知识图谱驱动的聊天机器人开发,通过对话完成数据收集,问题的生成及回答的自然语言理解



任职资格



1. 拥有自然语言处理、机器学习、模式识别、人工智能等相关专业的硕士、博士

2. 拥有较为丰富的自然语言处理、知识图谱、机器学习、深度学习方面的项目经验

3. 熟悉常用机器学习算法,熟悉深度学习算法

4. 工程实现能力强,能够胜任包括数据清洗、原型实现、训练调优、线上算法各个阶段的研发任务

5. 思路清晰,表达能力强;良好的团队合作精神
工作职责



1. 负责NLP/智能问答/知识图谱领域的架构/方案设计;

2. 基于海量问答数据带领团队构建远程医疗问诊平台型产品



任职资格



1. 数学. 计算机或NLP相关专业,研究生5年以上,博士3年以上工作经历,NLP. 智能问答. 知识图谱领域的实际工作经验

2. 对业界主流的NLP工具开源工具有实际使用经验,能基于此工具进行算法调优;

3. 对NLP领域的词法/句法/语法分析方面的算法有深入研究,能将算法调优运用到智能问答/知识图谱领域中;

4. 具备智能问答/聊天机器人方面的开发研究经验,有智能问答/知识库等实际研究成果;

5. 具备机器学习/深度学习/强化学习算法/信息检索/IR/聊天机器人方面的工作经验和基础;

6. 具有信息抽取/语义理解/人机交互/知识库构建/知识库解析与检索方面的经历;

7. 具有良好的沟通能力和团队合作精神,认真负责,较强的逻辑思维能力;



! Android 架构师技能图谱  

[[思维导图版-Android 架构师技能图谱]]

  
!! 架构与设计  
  
*设计模式  
*重构  
*技术选型  
**特性  
**可用性  
**性能  
**包大小  
**方法数  
**文档  
**技术支持  
*UI架构模式  
**MVC  
**MVP  
**MVVM  
  
!! 研发工具  
  
*集成开发环境  
**Android Studio  
**Sublime Text  
*版本控制系统  
**svn  
**git  
	**gitlab  
	**github  
**mercurial  
*调试工具  
**ADB  
**DDMS  
**Stetho  
**LeakCanary  
**ClassyShark  
**Postman  
**markman  
*CodeReview工具  
**Gerrit  
**Phabricator  
*构建工具  
**Gradle  
**Buck  
*效率工具  
**番茄钟  
**Markdown  
**WakaTime  
**Focus Matrix  
**evernote  
**Pocket  
  
!! 移动安全  
  
*代码和资源混淆  
*反编译  
*密钥管理  
*安全编码  
*应用加固  
  
!! 专项技术  
  
*App 瘦身  
*MultiDex  
*插件化  
*推送技术  
*Crash 统计  
*函数式编程  
*启动保护  
*在线热修复  
*AOP  
*React Native  
*Hybrid  
*SDK化  
*依赖注入  
  
!! 软技能  
  
*知识管理  
**团队Wiki  
**团队论坛  
*时间管理  
**四象限法则  
**帕累托法则  
**番茄工作法  
*目标管理  
**Smart 法则  
**思维导图  
**甘特图  
*项目管理  
**边界思维  
**过程思维(WBS)  
**风险思维  
**干系人思维  
**整合沟通  
*团队管理  
**招聘面试  
**梯队培养  
**技术规划  
**团队规范  
*个人管理  
**技术博客  
**技术分享  
**会议演讲  
**领导力  
**持续学习  
  
!! 周边技术  
  
*产品交互设计  
*后端技术  
*HTML5  
*iOS  
  
!! 移动测试  
  
*单元测试  
**JUnit  
**Robolectric  
**Mockito  
*UI自动化测试  
**Monkey  
**MonkeyRunner  
**UIAutomator  
**Robotium  
**Espresso  
**Appium  
*持续集成  
**Jenkins  
**Travis CI  
**fastlane  
*静态代码扫描  
**CheckStyle  
**FindBugs  
**PMD  
**Android Lint  
**Infer  
  
!! 性能优化  
  
*启动优化  
*代码优化  
*内存优化  
*电量优化  
*布局优化  
*网络优化  
  
!! 编程语言  
  
*Java  
*C  
*C++  
*Javascript  
*Groovy  
*Kotlin  




! Android App 开发技能图谱

!! 操作系统
*Windows/MacOSX/Linux

!! 编程语言

 *Java
 *HTML/JS (Hybrid/Web App)
 *C/C++ (NDK)
 *SQL (DB)
 *Kotlin

!! 开发工具

*IDE

 * Android Studio
 * Eclipse

*调试工具

**网络调试

***Charles
***Wireshark
***Fiddler
***tcpdump
***Paw/Postman

**内存分析

***monitor
***MAT

**Android tools

***adb
***draw9patch
***hierarchyviewer
***uiautomatorviewer

*版本管理

**Git

***Git命令
***Github/GitLab

** SVN

*CodeReview

**Gerrit
**Github pull request

*Bug/任务管理

**Redmine
**JIRA
**Bugzilla
**Teambition
**Tower
*编译工具

**Gradle

*持续集成

**Jenkins
**Travis CI

*应用分发

**蒲公英
**fir.im

------

!! App基础

*基本组件

**Activity
**Service
**Content Provider
**Broadcast Receiver
**Intent/Intent Filter
**App Manifest File

*UI

**Layouts
**Widgets
**Resources
**Animations
**设备适配

*Connectivity

**WiFi
**Mobile网络
**网络状态监听

*MultiMedia

**Audio/Video
**Camera/Gallery

*GPS&Location&Map

**系统定位

***GPS定位
***Network定位

**3rd Map定位

***百度Map
***高德Map

!! App进阶

*Process&Thread

** Process

***Linux进程
***App进程原理

** AIDL

***实现方式
***原理

**Handler/Looper/MQ/Thread

**Loader

**AsyncTask

*性能优化

**ANR

**布局层级性能优化

*内存优化

**内存检测工具

**内存分析工具

**Bitmap优化

**内存泄露查找及分析

*网络优化

** API优化

**低网速下优化

**流量使用优化

***判断当前网络类型
***使用缓存

*单元测试

!!  App高级

*相关原理熟悉

** Activity

***启动流程
***生命周期回调原理
***与View/Window的关系
***与Fragment的关系

**View/Window

***View/Window关系
***View渲染
***View事件分发处理流程

**编译打包

***编译打包原理
***逆向工程分析
***热修复

*Hybrid App

**与Native App的异同

**主流框架

***PhoneGap
***ionic
***React Native

*架构能力

**架构

***MVC
***MVP
***MVVM
***Flux
***Clean Architecture
**App框架

***分包
***分层

**设计模式

***OOD原则
***常用设计模式运用

*ART&Dalvik

**AOT compilation
**GC
**Bytecode&.Dex

*自动化测试

**monkey/monkey runner
**UIAutomator
**Espresso
**Robotium

!!  扩展学习

*响应式编程

**Rx

***RxJava
***RxAndroid
***RxBinding

**Agera

*主流开源库

**快速开发

***Android Annotation
***ButterKnife

**Views

***太多

**HTTP模型

***Retrofit
***OkHttp
***Volley

**图片处理

***Glide
***Fresco
***Picasso
***UIL

**依赖注入

***Dagger2

**数据库

***ORMLite
***GreenDAO
***Realm
***Sugar

**辅助

***Logger
***LeakCanary
***DbInspector



! Android ROM 开发技能图谱

!! 1. 操作系统

* Ubuntu(首选)
* MacOSX

!! 2. 编程语言

* Java
**JNI(务必掌握)
* C++
* C

!! 3. 源码

!!! 3.1 管理方式

* Codelines/Branches/Releases
* Codenames/Tags/Build Numbers

!!! 3.2 源码地址

* [官方源码](https://android.googlesource.com)
* [Github镜像](https://github.com/android)
* [高通扩展源码](https://www.codeaurora.org/projects/all-active-projects/android-msm)
* [CM源码](https://github.com/cyanogenmod)
* [MIUI部分源码](https://github.com/MiCode)

!!! 3.3 下载

* Repo/Git

!!! 3.4 阅读修改工具

* SourceInsight(首选)
* Eclipse
* Android Studio

!!! 3.5 编译

* 搭建编译环境
* Makefile编译体系

!! 4. 层次体系

!!! 4.1 核心Applications

* Phone/Contacts/MMS
* Camera/Gallery/Music/Video
* Settings

!!! 4.2 Frameworks

* Telephony
* MultiMedia
* Connectivity
* Window/View/ActivityManager
* Surface/Graphics

!!! 4.3 Native Libs

!!! 4.4 Android Runtime

* Dalvik
* ART

!!! 4.5 HAL

!!! 4.6 Linux Kernel

!!! 4.7 Driver

!! 5. 核心系统

!!! 5.1 Audio

!!! 5.2 Bluetooth

!!! 5.3 Camera

!!! 5.4 Media

!!! 5.5 Storage

* Internal
* External
* OTG

!!! 5.6 Sensor

!!! 5.7 Input

* EventHub
* Touch

!!! 5.8 Accessories

!!! 5.9 DRM

!!! 5.10 Power

!!! 5.11 Window

* WindowManager
* View
* ActivityManagerService

!!! 5.12 Telephony

* Phone
* RIL
* ATCommands
* Modem

!! 6 辅助技术
!!! 6.1 刷机
* fastboot
**unlock
**flash
* bootloader

!!! 6.2 设备分区

* boot
* system
* vendor
* userdata
* cache
* recovery
* misc

!!! 6.3 product配置

* Carrier
* File System
* Low RAM
* Runtime Permission(6.0)
* ...

!!! 6.4 调试工具

* GDB
* Valgrind
* Systrace
* Dumpsys
**Network usage
**RAM usage

!!! 6.5 兼容测试

* CTS源码下载
* CTS设置和执行

!!! 6.6 OTA升级

* 升级过程
**全量升级
**增量升级

* 升级优化
**缩减升级包







! Angular 2 技能图谱

! 模块

!! 自定义模块

*根模块

*特性模块

*共享模块

*核心模块

!! 内置模块

*ApplicationModule 模块

*CommonModule 模块

*BrowserModule 模块

*FormsModule 模块

*ReactiveFormsModule 模块

*RouterModule 模块

*HttpModule 模块

!! 元数据

*providers

*declarations

*imports

*exports

*bootstrap

*id

*schemas

*entryComponents

! 指令

!! 组件

!! 结构指令

*改变 DOM 树的结构,如 NgIf

!! 属性指令

*改变元素的外观和行为,如 NgStyle

!! 生命周期钩子

*OnInit

*OnChanges

*DoCheck

*OnDestroy

!! 内置指令

*通用指令

**NgClass
    
**NgStyle
    
**NgIf
    
**NgSwitch
    
**NgFor
    
**NgTemplateOutLet
    
**NgPlural

*表单指令

**FormsModule 模块

***NgForm
        
***NgModelGroup
        
***NgModel
        
***InternalFormsSharedModule 模块

**ReactiveFormsModule 模块
    
***FormControlDirective
        
***FormGroupDirective
        
***FormControlName
        
***FormGroupName
        
***FormArrayName
        
***InternalFormsSharedModule 模块

**InternalFormsSharedModule 模块

***表单元素访问器指令
        
***表单选择框选项指令
        
***表单验证指令
        
***控件状态指令

*路由指令

**RouterLink

***RouterLinkWithHref(a[routerLink])

***RouterLink(:not(a)[routerLink])

**RouterLinkActive

**RouterOutlet

!! 自定义指令

! 组件

!! 元数据

*selector

*moduleId

*inputs

*outputs

*host

*exportAs

*providers

*viewProviders

*changeDetection

*queries

*entryComponents

*templateUrl

*template

*encapsulation

*styles

*styleUrls

*animations

*interpolation

!! 生命周期钩子

*OnChanges

*OnInit

*DoCheck

*AfterContentInit

*AfterContentChecked

*AfterViewInit

*AfterViewChecked

*OnDestroy

!! 模板

! 模板

!! 表达式操作符

*管道(|)

**内置管道
    
**自定义管道
    
**纯管道
    
**非纯管道

*安全导航(?.)

!! 数据绑定

*属性绑定 - []

**插值 -{{}}
    
**Property 绑定
    
**Attribute、 class 与 style 绑定

*事件绑定  - ()

*双向绑定 - [()]

!! 表单

*模板局部变量(# 或 ref-)

*表单校验

* 内置校验器

* 自定义检验器

*表单状态

*表单指令

!! 内置元素标签

*\<ng-container>

*\<ng-content>

! 路由

!! 路由指令

!! 路由策略

*PathLocationStrategy

*HashLocationStrategy

*PreloadingStrategy

**PreloadAllModules
    
**NoPreloading(默认)
    
**自定义预加载策略

!! 路由拦截

*CanActivate(激活拦截)

*CanActivateChild(激活子路由配置项)

*CanDeactivate(反激活拦截)

*CanLoad(模块加载拦截)

*Resolve(数据预加载拦截)

!! 路由跳转

*指令跳转

**RouterLink

*代码跳转

**navigateByUrl()

**navigate()

!! 路由状态

*ActivatedRouteSnapshot

*RouterStateSnapshot

! 依赖注入

!! 注入器(树)

!! Provider

*类 Provider(useClass)

*值 Provider(useValue)

*别名 Provider (useExisting)

*工厂 Provider(useFactory)

!! forwardRef()

!! 可选依赖 - @Optional

! 服务

!! 内置服务

*JsonpModule 模块

**Jsonp
    
**BrowserJsonp
    
**RequestOptions
    
**ResponseOptions
    
**JSONPBackend

*HttpModule 模块

**HTTP
    
**BrowserXhr
    
**XHRBackend
    
**XSRFStrategy
    
**RequestOptions
    
**ResponseOptions

!! 自定义服务

! RxJS

!! Observable

!! Observer

!! Subscription

!! Subject

!! operators

*创建操作符

*转化操作符

*过滤操作符

*组合操作符

*错误处理操作符

*工具操作符

*条件操作符

!! Scheduler

! 装饰器

!! 类装饰器

*@Component

*@Directive

*@Pipe

*@Injectable

*@NgModule

!! 属性装饰器

*@Input

*@Output

*@HostBinding

*@HostListener

*@ContentChild

*@ContentChildren

*@ViewChild

*@ViewChildren

!! 参数装饰器

*@Inject

*@Optional

*@Self

*@SkipSelf

*@Host

*@Attribute

! 动画

*AnimationKeyframe

*AnimationPlayer

*AnimationSequencePlayer

*AnimationGroupPlayer

*AnimationQueue

*AnimationTransition

*AnimationTransitionEvent

! 变化检测

!! Zone.js

*ngZone

**onUnstable
    
**onMicrotaskEmpty

**onStable

**onError

!! 异步操作

*用户事件:Click/Change...

*通信:XHR/WebSocket

*定时任务:setTimeout/requestAnimationFrame

!! ChangeDetectorRef

! 测试

!! 单元测试

*Jasmine 测试框架

*Karma 管理工具

!! 端到端测试

*Protractor

*Benchpress

!!  内置工具集

*TestBed

*inject

*ComponentFixture

*fakeAsync

*flushMicrotasks

*tick

*discardPeriodicTasks

! 升级

*UpgradeAdapter

*UpgradeAdapterRef

! 模板编译器

*动态 - JIT

*静态 - AoT

** ngc

! 调试

*Augury

*断点调试

! 质量检查工具

* TSLint

*Codelyzer

! 构建工具

*webpack

*Gulp

*RollUp

*System.js

! 编码工具

*VS Code 

*WebStorm

*Atom

*Sublime Text 

*Vim

! 开发语言

*TypeScript

*ES6 / ES5

*Dart

! 周边生态圈

*Angular Material 2

*Universal

*Angular-CLI

*Ionic 2

*NativeScript

*Angular Mobile Toolkit

*AngularFire 2

*Angular Electron


! Apollo 自动驾驶工程师技能图谱

本图谱核心贡献者:Apollo 技术布道师团队

> 基于 Apollo 技术框架的自动驾驶工程师技能图谱:跟公布的技术框架结构保持一致,强调了 Apollo 软件之外的硬件能力。

!! Toolbox(Basic)
*Bazel
*Protobuf
*Docker
*ROS
*OpenCV

!! Language(Basic)
*C++
*Bash 
*Python
**Keras
*JavaScript
**Node.js
**React

!! Machine Learning Frameworks(Basic)
*PaddlePaddle
*Caffe
*TensorFlow

!! 硬件(芯片)编程 (Basic)
*CPU
*GPU(CUDA)
*FPGA

!! Cloud Service Platform(Apollo)
*HD Map
**OpenDrive
*Simulation
**Matlab/Simulink
**GameEngine(UE4)
*Data Platform
**虚拟化
**异构计算
**分布式计算
**分布式存储
*Security
*OTA
*DuerOS

!! Open Modules(Apollo)

*Localization
*Perception
**Deep Learning:CNN
**Low-level Vision
**图形学与视觉几何
**状态估计与滤波
**最优化问题求解
*Planning
**Smoothing Curves
**Vehicle Kinematics
**Station-time 2D Model
**Optimization Algorithms:Dynamic Programming
**Quadratic Programming
**Smoothing Spline
**A*
**Probability Math Models:Bayesian
**Markov Process
**MDP
**Machine Learning:
***CNN
***RNN
***Reinforcement Learning 
**Motion Planning Background:Sampling Based Motion Planning
**Optimization Based Motion Planning
**ComputerScience:Parallel Programming
**For Planning Focused:Basic Motion Planning Technique
**Dynamic Programming
**Computation Geometry
**深度学习算法、BP 算法
*Control
**Basic Control Theory
**Linear-Quadratic Regulator (LQR)
**Model Predictive Control(MPC)
**PID Basic Control Theory 
*End-to-End
**Deep Learning
**CV
**逆向汽车动力学模型
**端到端驾驶模型:
  ***横向模型:CNN
  ***纵向模型:Convolutional-LSTM
  ***横 *纵向模型:LRCN

!! Hardware & Sensors (Apollo)
*Computing Unit
**IPC(Intel Nvidia ...)
**专用自动驾驶计算单元(PX2 TX2 ...)
*Perception
**Camera(单目/双目)
**LiDAR
**Radar
**Ultrasonic Radar
*Localization
**GPS
**IMU
**other perception sensors
*CAN Card
*HMI Device
*V2X Device
*Safety
**Black Box
*传感器知识与技能
**搭建方式
**配置流程
**数据形式
**能够通过数据判断传感器是否正常工作
*无人车知识与技能
**基本的硬件组成
**各 Sensors 流程
**通讯信息接口
**各个传感器优点、能力与局限
**知道本模块对于硬件的需求
**算法对于硬件的依赖、瓶颈
**硬件的基本参数性能、调参方法
**熟悉上车开发调试环境

!! Vehicle(Apollo)
*线控车辆
*车辆电子控制系统
**Protocol
***Can
***Lin
***FlexRay
**动力系统控制
**制动系统控制
**转向系统控制
*车载语音交互系统
*AUTOSAR
职位描述:
1、负责移动应用产品设计及开发;

2、负责移动应用项目建设及管控;

3、负责移动新技术研究,扩展公司移动应用组件库。

职位要求:

1.扎实的h5+js+css3基础,熟悉Ionic/AngularJS/Cordova等技术,负责公司混合式移动应用开发平台开发扩展;

2.深入研究和学习最新的移动开发技术和理念,对移动应用开发平台进行持续的优化;

3.负责解决cordova与原生移动端的相关交互问题及中间框架开发调优,有原生插件封装经验优先;

4.具有android,ios移动原生开发经验优先;

5.具有2年及以上相关架构设计与开发经验
1969nian ,Unix系统和C语言被贝尔实验室的丹尼斯.利奇和肯.汤普生成功研发
职位职责: 

1、微服务架构下高性能中间件设计与研发; 

2、优化微服务相关组件系统性能,提升基础服务相关资源的使用率,增加系统稳定性,保障业务稳定高效运行。

职位要求: 

1、具有扎实的数据结构和算法功底,编码能力强悍; 

2、熟悉Linux操作系统和开发运营环境,熟练掌握C/C++,熟悉python/go/java更佳; 

3、熟悉计算机和网络原理,熟悉操作系统原理,对存储、队列、计算、集群管理中的一项或多项有深入的理解和认识; 

4、有较强的问题抽象能力,具备生产系统的分析和调试能力,系统调优能力强; 

5、善于沟通,工作积极主动,责任心强,具备良好的团队协作能力; 

6、熟悉 Service Mesh 优先。
岗位描述:

1.    参与开发新一代电商系统平台(BS架构)开发、及核心系统(CS架构)维护

2.    参与建立系统能力监控体系,持续优化高并发业务流程中的性能瓶颈点;

3.    解决各类中间件性能及稳定问题;

 

岗位要求:

1、计算机等相关专业,本科及以上学历,五年以上.NET实际项目开发经验

2、精通C#或JAVA语言,熟悉.NET Core on Linux/Docker优先

3、精通任意一种数据库:Tidb/MySql/PostgreSql/SqlServer

4、具有良好的代码规范和编程习惯

5、有良好的沟通能力,逻辑分析能力,和高度的责任心

6、有电商订单支付系统开发项目经验者优先

7、至少熟悉一项:Redis、RabbitMQ、Kafka、ElasticSearch

8、加分项可选:有Github开源项目者优先

9、加分项可选:有技术博客者优先
1980年,比加尼.斯楚士舒普将C语言发展为C++语言
! CDN 技能图谱

!! 服务
*Potal
*客户管理
*频道管理
*GSLB配置
*SLB配置
*设备管理
*监控平台
*告警平台
*计费系统
*日志系统

!! 调度
*调度方式
*DNS
**ECS
*二层
**LVS
**隧道
*三层
**Anycast
**LVS
**SDN
**隧道VPN
*四层
**四层负载均衡
*七层
**HTTP 302 redirect
**七层负载均衡
*内置于应用端
**HTTPDNS

*调度范围
*全局级别 GSLB
*节点级别 SLB

*调度依据
*网络位置远近
**地理位置
**ISP
  *链接质量好坏
**RTT
**带宽
**链接质量
  *设备状态
**连接数
**负载
**TCP建联时间
**首包时间
**传输速度
  *节点带宽单价
  *业务重要性

!! 分发系统
*Cache
**反向代理
*分发方式
**反向代理被动式拉源信息
**预加载主动推送
**视频拉流
**视频推流

!! 技术
*DNS


!! 评判指标
*主要质量指标
**域名解析时长
**TCP建连时间
**首字节时间
**传输速度
**回源率
*主要性能指标
**网络吞吐
**并发连接数
**CPU负载
**磁盘IO吞吐
**缓冲命中率
**主要质量指标变化

!! 业务性质
*文件性质
**小文件
**大文件
**流文件
*资源分发缓冲特征
**动态资源不可分发不缓冲
**静态资源可分发可缓冲
**直播可分发不缓冲
*协议
**HTTP
**HTTPS
**视频流
*连接使用
**一次性 短连接
**复用长连接
**多路复用 SPDY
*主要业务性质
**页面
**图片
**下载
**点播
**直播

!! TCP
*单边优化
*双边优化

!! 第三方测试
*基调
*博瑞
*......

!! Cache关键附属功能
*刷新
*预加载

!! 开源软件
*测试工具
**curl
**wget
**ab
**nc
**ping
**dig
**nslookup
**traceroute
**mtr
**iperf
**......
*Cache
**nginx
**squit
**ATS
**varnish
**......
*负载均衡
**Haproxy
**LVS
**......
*DNS
**BIND View geo
**powerdns+geo backend
**......
*告警
**Zabbix
**......


职位描述:

岗位职责

1.	参与制定公司的战略规划、制定不同发展阶段的数据产品策略和
数据研究战略;

2.	负责构建公司产品数据分析与数据挖掘体系,负责海量运营数据的分类汇总和分析研究;

3.	负责对数据库信息进行深度挖掘和有效利用,充分实现数据的商业价值,有效支持产品战略决策以及有效提升产品运营数据;

4.	负责数据管理团队的建设工作,有效领导数据分析与挖掘团队,为产品未来的发展提供决策支持、改进性方向建议和预见性建议;

5.	负责大数据平台的全程管理和落地实施;

6.	管理和指导大数据团队的日常工作;

7.	支撑业务团队的大数据需求,帮助提升业务的关键指标;

8.	在大数据行业内发挥个人影响力,不断提升公司形象。

任职要求

1.	数学相关专业硕士研究生以上学历;

2.	10年以上互联网行业的大数据相关工作经验;

3.	在应用大数据方面,有推动公司业务发展方面作出过重大贡献;

4.	熟悉大数据处理的常用技术,有处理上亿用户数据的经验;

5.	对互联网行业有深刻了解,有一定的行业影响力和知名度;

6.	具有独立工作及领导组织能力、很强的沟通及组织协调能力、很强的团队建设能力及影响力。
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cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9IjBGNkU2MDJBRTVGODEyOTg4RjQwNjVBQzVGRUJDNENGIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjg5MGFlY2Q2LWY2YzItNDQ0Zi04YWRjLTZmMGI4MTlkZDBiZSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSIwRjZFNjAyQUU1RjgxMjk4OEY0MDY1QUM1RkVCQzRDRiIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wNS0xOVQxOToyNToxMiswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDUtMTlUMTk6MjY6MzIrMDg6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMDUtMTlUMTk6MjY6MzIrMDg6MDAiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4OTBhZWNkNi1mNmMyLTQ0NGYtOGFkYy02ZjBiODE5ZGQwYmUiIHN0RXZ0OndoZW49IjIwMTktMDUtMTlUMTk6MjY6MzIrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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
! Clojure 技能图谱

!! Clojure语言环境搭建
*Clojure安装
*新建Clojure项目
*命令行运行-main(Java main方法)函数
*使用REPL
*Clojure开发工具

!! Clojure语言编程基础
*语法(S-expression)
*函数 (function)
*命名空间 (namespaces)
*流程控制 (flow control)
*数据结构 (data structures)
*读取器宏 (reader macro)
*惰性序列 (lazy sequences)
*递归 (recursion)
*使用java类库 (call java libraries)
*面向对象 (OO)
*多重方法 (multimethods)
*宏 (macros)
*测试 (testing)

!! Clojure并发编程
*Refs
*Agents
*Atoms
*core.async

!! 其余Clojure编程方式
*core.typed (类型系统)
*core.logic (逻辑编程)
*core.match (模式匹配)
*algo.monads

职位描述:

1. 计算机安全管理团队建设

2. 负责全公司计算机网络安全体系建设,制定公司整体安全策略与方
案;

3. 制定软件开发安全架构与规范并建立完善的安全审查制度;

4. 突发网络安全事件的应急处理;

5. 负责设计网站安全防护体系;

6. 负责网络和服务器定期安全漏洞扫描分析和入侵检测;

7. 负责网站数据和信息安全保密等预防措施和相关监控;

8. 协同互联网安全网站以及白帽安全团队跟踪**安全漏洞以及应对措施。

任职资格: 

1. 计算机或相关专业本科或以上学历,5年以上网络安全领域工作经验,有防入侵攻击等实战经验;

2. 精通网络安全技术:包括漏洞扫描、程序漏洞分析检测、入侵和攻击分析追踪、网站渗透等;能熟练使用相关工具分析网络问题;

3. 精通DOS/CC攻击类型和原理, 具有DDOS/CC攻防经验,能够迅速定位攻击来源以及攻击方式,确定防攻击的措施和相关策略的能力;

4. 精通计算机反病毒原理以及相关工具;

5. 精通路由器、(正反向)代理服务器、web服务器、数据库服务器等原理以及安全设置方法,掌握各类服务器日志格式并有能力从中诊断安全信息;

6. 精通Windows、Linux等操作系统,精通shell、python等自动化脚
本语言;

7. 熟悉常见扫描工具的使用,能够发现网络中或者系统存在的缺陷,并提出补救 措施;

8. 5年以上互联网安全技术团队建设与管理经验,有较强沟通以及抗压能力;

9. 熟知互联网安全网站以及白帽安全团队并具备较好的人脉关系。
!!CTO岗位描述1

工作职责



参与公司战略规划制定,为公司业务发展提供全面技术保障,确保技术行业领先

负责制定审核公司技术管理制度和技术规程标准

负责规划公司产品的技术构架、重难点技术攻关

全面负责公司技术层面整体运营,包括IT、互联网、人工智能等方向的技术方案和产品研发、项目实施和技术管理

负责指导处理协调和解决公司项目推进中出现的技术问题,保证项目正常进行并按时完成

负责技术方案开发、实施的各个环节,把握整体进度和预算,控制项目风险

关注前沿技术,研究其中的商业价值,根据公司战略进行应用转化

组织制定公司人工智能(AI)、大数据挖掘等项目整体开发计划,规划公司产品技术构架并组织实施

负责公司网站、移动互联网整体系统技术架构、服务器架构、网站开发、产品实现及运维管理

负责公司整体信息安全,完善数据标准及信息保密制度,制定信息系统安全及灾难恢复政策和程序

负责公司IT系统安全、高效、稳定运行

负责公司网络的安全和防范及管理

负责技术团队建设和管理,做好人员配置与协调持续提升团队工作质量和效率

所辖员工培养选拔,业绩考核,工作任务分配



任职资格



1、具有8年以上技术团队管理经验,具有知名互联网公司、金融行业相关工作经验者优先;

2、目前在行业领先的大型公司担任CTO职务;

3、熟悉人工智能、大数据挖掘等前沿技术,有(从无到有的)独立完成复杂系统架构、设计以及开发的经验,对各类智能领域(人机、语音、视觉、全息、AR/VR、机器人等有较深的理解;

4、掌握互联网/人工智能新技术,能够把握未来人工智能行业技术发展趋势和业务发展动向,对关键技术有独到见解。





!!CTO  职位描述2



工作职责



1、参与公司战略讨论,负责整体技术发展方向

2、组织制定和实施重大技术决策和技术方案,制定技术发展战略、规划发展方向,全面负责公司技术层面的所有管理工作;

3、负责技术攻关与团队技术指导;带领技术团队构架、研发、设计,完成对于平台整体搭建、维护及产品开发;

4、设计、指导关键技术模块,并对系统安全性、稳定性负责



任职资格



1、10年以上互联网技术开发及管理经验,3年以上大中型互联网公司首席技术官或技术总监管理经验

2、精通互联网企业技术系统的架构设计、系统分析、软件实现、性能优化及系统安全

3、对互联网格局有深刻理解和技术实现能力,有丰富的项目管理经验、产品研发经验

4、有优秀的团队搭建及管理经验
!  CTO 技能图谱

!! 岗位职责
* 	建立技术团队文化
* 	规划技术发展路线
* 	落地产品研发成果
* 	宣传公司技术品牌
* 	吸引优秀技术人才

!! 基本素质
* 	正直诚实的道德修养
* 	谦虚谨慎的工作态度
* 	随机应变的处事风格
* 	统领全局的战略思维

!! 硬技能

!!! 技术能力
* 具备一定的技术深度
* 具备较强的技术广度
* 追求技术选型合理性
* 对技术发展嗅觉敏锐

!!! 业务能力
* 能深度理解业务本质
* 能用技术来帮助业务
* 让技术驱动业务发展

!!! 架构能力
* 能站在业务上设计架构
* 架构规范合理且易落地
* 能为架构设计提出意见

!!! 产品能力
* 具备一定的产品价值观
* 能准确地抓住用户刚需
* 能为产品设计提出意见

!!! 管理能力
*团队管理
**招人:知道如何吸引所需的人?
**识人:知道如何识别已有队员?
**育人:知道如何让队员们成长?
**开人:知道如何请人愉快离开?
**留人:知道如何留住该留的人?
**挖人:知道如何挖到需要的人?
*项目管理
**估算:知道项目成本如何估算?
**分工:知道工作任务如何分配?
**排期:知道项目计划如何制定?
**实施:知道项目实施如何开展?
**发布:知道项目发布如何执行?
**回顾:知道项目回顾如何进行?
*绩效管理
**制定:知道如何制定考核标准?
**执行:知道如何执行绩效考核?
**优化:知道如何提升团队绩效?
*时间管理
**制定:知道如何制定团队计划?
**管理:知道如何管理团队任务?
**权衡:知道如何权衡优先级别?
*情绪管理
**控制:知道如何控制自我情绪?
**转化:知道如何化悲观为乐观?
**使用:知道如何善用自我情绪?

!! 软技能

!!! 领导能力
*决策能力
**不要害怕做决定
**做出正确的决定
**敢于为决定负责   
*影响能力
**不要改变别人而是激发别人
**用自己的行为和态度去激发
**持续不断提高自己的影响力
*沟通能力
**向上沟通(与公司创始人)
    ***领会老板真实意图
    ***站在老板角度思考
    ***不要强迫改变老板
**向下沟通(与本部门同事)
    ***是沟通而不是命令
    ***站在下属立场沟通
    ***不要吝啬夸赞队员
*横向沟通(与跨部门同事)
**突出对方的重要性
**先要共识才能共赢
**懂得圆满大于完美

!!! 执行能力
* 理解执行目标
* 提高执行效率
* 确保执行效果

!!! 学习能力
* 对新知识充满好奇心
* 能够快速学习新技能
* 拥有触类旁通的能力

!!! 组织能力
* 积极主动并有活力
* 做事情敢于放得开
* 能够调用所需资源

!!! 洞察能力
* 善于抓住事物本质
* 善于观察人性心理
* 善于预见未来变化

!!! 抗压能力
* 学会释放压力
* 化压力为动力
* 化消极为积极

!!! 自省能力
* 能够不断自我反省
* 能够从失败中总结
* 能够在总结中提高

!!! 战略能力
* 能够深刻理解公司战略
* 能够站在更高层次思考
* 结合战略形成技术壁垒

!!! 社交能力
* 善于表达自己
* 善于结交朋友
* 善于公众演讲

!!! 谈判能力
* 能够通过谈判得到对方认同
* 能够从谈判中找到共赢方式
* 能够在谈判场合中保持镇定

!!! 政治能力
* 能够对政治持有敏感度
* 能够处理办公室小政治
* 能够主动避免政治风险

岗位职责:

1.负责数据库(MYSQL、DB2)的故障处理、技术支持等工作;

2.配合开发提供数据库支持,负责SQL代码的上线审核,保证生产环境SQL的高效稳定运行;

3.负责数据库性能优化、故障处理、日志分析等;

4.进行业务系统数据库的规划、设计、实施,设计并优化数据库建设方案;

5.负责项目相关的数据库性能问题分析、SQL索引性能优化,以及生产数据库的部署、配置、调优、故障处理、安全管理与物理设计;

6.参与设备选型、数据库容量/数据模型/库表结构设计、改善应用程序的数据运行性能,并为开发团队提供数据库相关的技术支持。
 

任职要求:

1.两年以上MySQL经验或DB2经验;

2.精通数据库原理、数据库核心参数的设置和调整;

3.精通DB2、MySQL数据库体系结构;

4.要求有故障诊断经验,对MySQL的整体架构熟悉,可进行SQL、参数调优;

5.熟练掌握DB2 HADR、Mysql主从复制技术、MHA等技术;

6.熟悉Linux基本管理,熟练使用c、JAVA、Python等至少一种语言; 

! DBA技能图谱

!! 网络
*TCP/IP协议
*工具
**tcpdump
**ss

!! 数据库类型
*关系型
**Oracle,MySQL,DB2,SQLserver
*KV型
**Redis,RocksDB
*文档型
**MongoDB
*列存储
**HBase,Cassandra
*内存数据库
**SQLite,TimesTen

!! 运维工具
*部署
**saltstack,puppet,ansible
*监控
**cati,zabbix,nigos

!! linux基础
*常用命令
**[[alt 常用命令|https://github.com/MiliOnE/skill-map/blob/master/data/map-DBA-comands.png?raw=true]]
*文件系统
**ext4
**xfs
*io调度
**deadline,noop,cfq
**The Linux  I/O Stack Diagram
**[[alt io调度|https://github.com/MiliOnE/skill-map/blob/master/data/map-DBA-io.jpg?raw=true]]

!! 硬件
*RAID卡
**读写策略
***WB
***WT
***FORCE WB
**BBU
*SSD
*网卡
*PCI-E/NVMe

!! 开发语言
*python,shell,perl
*java,C/C++,go

!! 数据库技能
*理论知识
**B*树/B-树/hash/索引原始结构等
**事务ACID
**MVCC
**锁机制 行锁/死锁/mutex锁等
**innodb读写相关操作的原理
**分布式事务
*备份/恢复
**xtrabackup
**mysqldump
**mydumper/myloader
**mysqlpump/mysqlimport(5.7版本)
**rsync/qpress压缩
*高可用
**HA
***MHA
***keepalive
***PXC
***zookeeper
**sharding
***水平拆分
***垂直拆分
*中间件
**TDDL
**Cobar
**OneProxy
**Atlas
**mango乐视
**Mycat
**fabric
*优化
**原则 空间换时间
**业务逻辑设计
**库/表结构 索引设计
**慢查询
**拆分
*工具集
**pt-tools
**orzdba,iotop,ytop
**pstack

!! 关联软件
*消息队列
**nsq
**RabbitMq
**kafka
*缓存
**memcache,tair,redis
*DNS
*搜索
**ELK,Solr

!! 软技能
*能说
*会写

! DevOps技能图谱


! 方法和文化

!! 核心文化
*CALMS原则
*The Three Ways
*自动化
*可视化
*度量化

!! 敏捷方法论
*以人为本
*敏捷宣言
*极限编程
*SCRUM方法
*迭代改进
*需求管理

!! 精益方法论
*最小可行产品
*单一关键指标
*精益画布
*精益看板
*风险管理
*超越预算
*投资组合

!! 持续集成和持续交付
*流水线
*版本控制
*依赖管理
*内建质量
*环境管理
*零停机发布
*灰度发布


! 设计和架构

!! 云原生架构
*十二要素
*CAP理论
*BASE理论
*云基础设施
*无状态服务
*高可用设计
*自动扩缩容
*平台即服务

!! 微服务架构
*康威定律
*服务治理
*服务发现
*配置管理
*故障熔断
*日志管理
*性能监控
*链路监控
*服务网关

!! 领域驱动设计
*统一语言
*业务实体
*值对象
*聚合
*工厂
*仓储
*领域服务
*限界上下文
*上下文地图
*分层架构
*事件风暴

!! 设计思维
*以用户为中心
*发散性思考
*头脑风暴
*交互原型
*测试反馈


! 技术和工具

!! 版本控制
*Subversion
*Mercurial
*Bazaar
*Git
*Gitlab
*Gogs
*SourceTree
*Visual SourceSafe

!! 基础设施和云平台
*Ansible
*Chef
*Puppet
*SaltStack
*Fabric
*Terraform
*StackStorm
*Docker
*AWS
*Azure
*GCE
*阿里云

!! 交付流程可视化
*Jenkins
*Buildbot
*Drone
*GoCD
*TeamCity
*Gitlab CI
*Bamboo
*Travis
*CircleCI
*Shippable

!! 团队协作和项目可视化
*Jira
*Redmine
*Trello
*Basecamp
*Teambition
*Confluence
*Gitbook
*Team Foundation

!! 测试和质量管理
*SonarQube
*Fortify
*Swagger
*Cucumber
*RobotFramework
*Selenium
*Gauge
*JMeter
*Gatling
*LoadRunner
*Tsung

!! 日志和监控
*Zabbix
*Nagios
*Prometheus
*TICK Stack
*Grafana
*Elastic Stack
*Flume
*Splunk
*Scribe
*Fluentd
*Chukwa
*OneAPM
*听云

!! 安全和密钥管理
*Threat Modeling
*OWASP ZAP
*OpenTPX
*Passive Total
*Critical Stack
*Vault
*BlackBox
*Transcrypt
*Keybase
*Git Secrets
! DNS排查技术图谱

!! 应用程序视角
*应用程序
**浏览器
***hostname cache
**ping
*操作系统
**hostname cache 
**域名解析器
***dig domain
*本网DNS转发器
**无线路由
***dig@gateway_ip domain
*Local DNS
**dig@localdns domain
*全球DNS系统
**根root“.”
**顶级域名 TLD
***gTLD
***ccTLD
**二级域名 SLD
**主机域名
***Here!
***dig+trace domain
!! 操作系统视角
*配置来源
**配置
***自动 
****DHCP
*****PPPOE
*****VPN
*****无线路由
***手工
**角色
***首选DNS
***备用DNS
***...
**附加域名后缀?
***不附加
 ****FQDN
***附加
 ****默认.Local
***强制不附加后缀
 ****FQDN
 *****主机名后添加“.”结尾
*一般*NIX环境
**/etc/nsswitch.conf
***[wins][nis][nisplus]...
***dns
 ****/ect/resolv.conf
 *****Here!
**/ect/host.conf(旧)
***[nis]
***bind
 ****/etc/resolv.conf
 *****Here!
**一般优先选择
*Windows环境
**一般顺序
***Checks it's own name
***Local hostname cache
***HOSTS file
***DNS
 ****Here!
***NetBIOS name cache
***[WINS]
 ****开启wins
 ****关闭wins
***Broadcast
***LMHOSTS
**参考
*** https://technet.microsoft.com/zh-cn/library/bb457118.aspx

!! 域名注册视角
*根
**管理机构ICANN
***TLD注册
**TLD
***所属
 ****gTLD
 *****ICANN指定
 ****ccTLD
 *****一般XX国家信息中心
***管理
 ****注册局
 *****注册代理(SLD)
     *****Here!
***SLD
 ****所属
 *****域名所有者(个人、组织)
 ****管理
 *****自建
 *****托管 
 ****Host
 *****Here!
*注册代理
**注册局
***whois db
 ****域名注册信息
 *****Here! 
***TLDzone
 ****域名的NS
 *****Here!
 ****Glue A

!! 国际域名视角
*即IDN域名
**中文
***繁体
***简体
**阿拉伯文
**...
*浏览器角色
**IDN》unycode编码》普通域名
**Here!
*DNS角色
**普通域名

!! 域名配置
*zone
**RR资源记录
***域名
***资源类型
***Rdate 资源数据
 ****Here!
***TTL
*查询结论
**zone之外
***拒绝+空
**没有目标域名
***NXDomain+SOA
**存在域名但缺少相应的资源类型
***NOERROR+SOA
**直接找到目标
***NOERROR+目标RR
 ****Here!

!! 一般开发视角
*gethostbyname系列
**hostname来源
***自己的Hostname
***NIS
***SMB
***NetBIOS
***DNS
 ****Here!
***...
**addr
***IPv6(如果允许默认优先)
***IPv4
***...
**操作系统
***GNU Linux glibc
***Windows winsock
***Linux Windows Android...
 ****JVM

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
! Git

!分布式世界


!! 1. 版本控制之道

*版本库
**集中式(CVS、SVN)
**分布式(git)
*工作目录树
**断面视图
**工作拷贝
    	***1、初始化(init).git目录
    	***2、克隆(clone)
*代码修改与文件同步
*跟踪项目、目录和文件
*使用标签跟踪里程碑
*使用分支来跟踪并行演进
*合并
*锁机制

!! 2. 安装与设置

*安装
**Linux
**Mac:sudo port install git-core +svn +doc
**Windows
    ***Cygwin
    ***MSys
*设置 git config
**提   交  者:git config --global user.name "Jamsonwoo"
**邮件地址:git config --global user.email "Jamsonwoo@126.com"
**查看:git config --global --list
**颜色:git config --global color.ui "auto" (auto/always/false)(注:MSys建议用always)
*GUI
**Tcl/TK:git gui(备注:工作目录树)
**gitk --all(备注:工作目录树)
**GitX (Mac)
*内置帮助
**git help <command>
**git-doc

!! 3. Hello Git

*创建版本库:git int
*修改代码
**1、添加索引:git add index.html
**2、提交记录:git commit -m "add in hello git HTML"  (备注:提交留言至少应该体现出进行本次修改的原因。先用一句简单的话来概括该提交;然后用几句话全面解释。)
**3、查看日志
    ***git log <-1>(扩展:SHA-1哈希码)
    ***git log --pretty=oneline
*视图状态:git status (备注:存放代码)
	**1、工作目录树  
	**2、索引(暂存区)  
	**3、版本库
*分支
**1、创建分支:git branch 新分支名称 父分支名称  git branch RB_1.0 master

**2、提交修改:git commit -a(-a:提交全部修改过的文件)
**3、切换分支:git checkout 分支名称    git checkout RB_1.0
*处理发布
**1、打标签:git tag 标签名称 打标签的点      git tag 1.0 RB_1.0
**2、变基命令:git rebase 分支名称(合并到主分支)   git rebase RB_1.0
**3、删除分支:git branch -d 分支名称    git branch -d RB_1.0
**4、创建归档:git archive --format=输出格式 --prefix=包内容 需要归档的标签名称 | gzip > 压缩结果重定向  
    	***git archive --format=tar --prefix=mysite-1.0/ 1.0 | gzip > mysite-1.0.tar.gz  
    	***git archive --format=zip --prefix=mysite-1.0/ 1.0 > mysite-1.0.zip

*克隆远程版本库:git clone 远程版本库的位置 存放该版本库的本地目录     


```
git clone  git://github.com/tswicegood/mysit.git mysite-remote

```



! Git用法



!!! 1. 添加与提交

*添加文件到暂存区
**1、启动交互命令提示符:git add -i
**2、直接进入补丁模式:git add -p
*提交修改
**1、跟踪空目录:git不单独记录和跟踪目录,解决:在空目录里添加一个句点开头的空文件
**2、git commit 的提交留言编辑器 -v  
    	***如果输入不带-m参数的git commit命令,Git将启动编辑器来编辑提交留言。为启动编辑器,Git会按照一下顺序查找编辑器的设置:
		****1、环境变量 GIT_EDITOR 的值。
		****2、Git 的设置 core.editor 的值。
		****3、环境变量 VISUAL 的值。
		****4、环境变量 EDITOR 的值。
		****5、如果上述值均为空,Git 会尝试启动 vi 编辑器。   

     
*提交三法  
**备注 a、提交暂存后的修改(先暂存后提交)  
**备注 b、提交工作目录树中的所有修改(把修改直接提交)  
**备注 c、提交工作目录树中执行的修改(把修改直接提交)
**1、添加到暂存区
    ***1、git add 文件
    ***2、git commit -m "留言"
**2、提交所有修改到版本库:git commit  -m "留言" -a
**3、指定提交文件(列表):git commit -m "留言" 文件  

```
        Git别名:  
        git commit 简写为:git ci  
        git config --global alias.ci "commit"
```

*查看修改内容
**1、查看当前状态:git status  

```

        Changes to be committed.    待提交变更   
        Changed but not updated.    未更新到索引的变更
```

**2、查看文件改动:git diff
    ***a、git diff 无参 工作目录树 VS 暂存区
    ***b、git diff --cached  暂存区 VS 版本库
    ***b、git diff HEAD  工作目录树(暂存+未暂存) VS 版本库
*管理文件
**1、文件重命名与移动:git mv 原文件名称 新文件名称
**2、复制文件:无git cp命令,无需复制
**3、忽略文件:
    ***a、版本级:文件加入.gitignore文件中,支持通配符*
    ***b、本地级:.git/info/exclude

!! 2. 分支

*什么叫分支
**分支重命名:

```
git branch -m   分支原名称   新名称  
git branch -m    master       mymaster
```

**显示本地版本库所有本地分支名称:git branch
**创建分支:1、试验性更改  2、增加新功能  3、Bug修复
*创建新分支
**创建分支:git branch   新分支名称  
        
```
git branch newBranchName

```

**检出分支:git checkout 分支名称  
       
```
 git checkout newBranchName
```

**创建并检出:git checkout -b  新分支名称  新分支源分支  
       
```
 git checkout -b newBranchName2 master
```

*合并分支
**合并(merge)方法
    ***1、直接合并:把两条分支上的历史轨迹合并,交汇到一起
    ***2、压合合并:一条分支上若干提交条目压合成一个提交条目,提交到另一条分支的末梢
    ***3、拣选合并:拣选另一条分支上的某个提交条目的改动带到当前分支上
**直接合并
    **git merge 分支名称  

```
            git checkout alternate  
            git add about.html  
            git commit -m "add about page"  
            git checkout master  
            git merge alternate
```

**压合合并
    ***git merge --squash 分支名称  
           

```

            git checkout -b contact master  
            git add contact.html  
            git commit -m "add contact file"  
            git commit -m "add contact file 2" -a  
            git checkout master  
            git merge --squash contact  
            git status  
            git commit -m "add contact page" -m "has primary and secondary email"

```


**拣选合并
    ***git cherry-pick 提交名称  

```
            git checkout contact  
            git commit -m "add contact 3" -a  
            [contact 6dbaf82]......  
            git checkout master  
            git cherry-pick 6dbaf82  /  git cherry-pick -n 6dbaf82
```

*冲突处理
**git merge  

```
        git checkout -b about master  
        编辑about.html  
        git add about.html  
        git commit -m "add about.html "  
        git branch about2 about  
        编辑about.html  
        git commit -m "add about.html 1" -a  
        git checkout about2  
        编辑about.html  
        git commit -m "add about.html 2" -a  
        git checkout about      
        git merge about2     
        git mergetool    
        git commit
```

**处理冲突软件(kdiff3):git config --global merge.tool kdiff3
**git mergetool
*删除分支
**git branch -d 分支名称  (成功合并到当前分支时)  

```
        git branch -d about2
```

**git branch -D 分支名称 (强制删除)
*分支重命名
**git branch -m 原分支名称  新分支名称 (不允许重名)  

```
        git branch -m contact abc
```

**git branch -M 原分支名称  新分支名称 (强制覆盖)  

```
        git branch -m master contact
```


!! 3. 查询历史记录

*查看日志
**git log
    ***j 向下浏览;k 向上浏览;q 退出
    ***提交名称、提交人、提交日期、提交留言
**git log -p (显示版本之间的代码差异)
**git log -1(数字表示提交日志条数)
**git log 7b1558c (指定提交名称缩写[前7位])
*指定查找范围
**git log --since/before="英文格式日期"
    ***git log --since="5 hours" (最近5小时内)
    ***git log --before="2012-8.20" -1 (20120820之前的最后一条)
**git log 最老版本..最新版本
    ***git log 18f822e..0bb3dfb
    ****注:日志结果不包括最老,包括最新
    ***git log 18f822e..HEAD  /  git log 18f822e..
**git log 标签名称
    ***git log --pretty=format:"%h %s" 1.0..HEAD
    ***git log --pretty=oneline 1.0..HEAD
**\^:回溯一个版本
    ***git log 18f822e^^
    ****注:1、windows系统下,^需要添加双引号 git log “18f822e^^”。
    ****注:2、当遇到某个节点(通常是版本合并后的节点)有并列的多个父节点时,“^1”代表第一个父节点,“^2”代表第二个,以此类推。而“^”是“^1”的简写。


**`*`~N:回溯N个版本


    ***git log -1 HEAD`^^^`  /  git log -1 HEAD^~~2  /  git log -1 HEAD~~1^  /  git log -1 HEAD~3
    ***git log -1 HEAD~10..HEAD
*查看版本间差异
**git diff 版本名称(与当前工作目录树的差异)
    ***git diff 18f822e
**git diff --stat 1.0(数据统计)
*查明提交者
**git blame 文件名(特定代码块历史)
    ***git blame hello.html
    ****注:1、格式:提交名称  初始文件名(提交人   提交时间  行号)   代码行
    ****注:2、^脱字号开头表示版本库中第一个递交
**git blame -L <开始>,<结束> 文件名(特定代码行历史)
    ***git blame -L 12,13 hello.html
    ***git blame -L 12,+2 hello.html
    ***git blame -L 12,-2 hello.html
**git blame -L 正则表达式 文件名(特定代码行历史)
    ***git blame -L "/<\/body>/",+2 hello.html
    ***>git blame -L "/<\/body>/",-2 "4333289e^" -*index.html
*跟踪内容
**检查在同一个文件内移动或复制的代码行:git blame -M 文件名
**查看文件之间的复制:git blame -C -C 文件名
**查看显示代码的具体变动的历史记录:git log -C -C -1 -p
*撤销修改
**增补提交:git commit -C HEAD -a `--`amend
    ***--amend:增补提交
    ***-C:复用指定提交的提交留言
    ***-c:打开编辑器,在已有提交留言基础上修改
**反转提交:git revert -n 提交名称
    ***参数:--no-edit
**复位:git reset 提交名称
    ***提交名称默认值:HEAD
    ***提交名称可用^和~修饰符
    ***参数--soft:暂存所有因复位带来的差异,但不提交它
    ***参数—hard:慎用,从版本库和工作目录树中同时删除提交
*重新改写历史记录
**重新排序提交:git rebase -i HEAD~3
**将多个提交压合成一个提交:git rebase -i 0bb3dfb^
**将一个提交分解成多个提交:git rebase --continue

!! 4. 与远程版本库协作

*网络协议
**SSH:用户名@服务器名/版本库路径  
        `git@github.com/tswicegood/mysite-chp6.git`

**git:协议://服务器名/版本库路径  (使用9418端口、匿名、无须加密、只读)  
        git://github.com/tswicegood/mysite-chp6.git
**HTTP/HTTPS:需架设WebDAV服务
**最快:git
**安全:SSH
**不受防火墙限制:HTTP(S)
*克隆远程版本库:
`git clone git://github.com/tswicegood/mysite-chp6.git`

*版本库同步
**取来(fetch):git fetch
**查看远程分支:git branch -r
**取来合并:git pull 远程版本库名称 须要拖入的远程分支名
**远程分支名前缀origin/表示远程版本库上的分支名称,origin是默认远程版本库别名
*推入改动
**推入默认版本库origin:git push
**查看推入哪些提交:git push --dry-run
**推入指定版本库:git push  

        `git push origin mybranch:master`

* 添加新的远程版本库

**一次拖入:
`git pull git://ourcompany.com/dev-erin.git`

**使用别名:git remote add 别名 路径
**查看远程版本库详细信息:

`git remote show` <name>

**删除别名:git remote rm

!! 5. 管理本地版本库

*使用标签标记里程碑
**标签只读、标签名不能包含空格
**查看已存在标签:git tag
**新建标签:git tag 标签名
**git tag 标签名 提示名称/分支名称
*发布分支的处理
**发布分支通常以RB_为前缀并包含版本号,RB_1.3
**git branch RB_1.0.1 1.0
*标签与分支的有效名称
**不能以“/”结尾
**不能以“.”开头
**不能使用特殊字符:空格~^:?*[控制符删除键
**不能出现“..”
*记录和跟踪多个项目
**多个项目共享一个版本库
**多项目多版本库
*使用Git子模块跟踪外部版本库
**添加新子模块
    ***查看该版本库的子模块:git submodule
    ***添加新子模块:git submodule add 源版本库 存储路径  
           ` git submodule add  git://github.com/tswicegood/hocus.git  hocus`

    ***初始化子模块:git submodule init hocus
**克隆含子模块的版本库:git submodule update 子模块名  
        

```
        cd work  
        git clone magic new-magic  
        cd new-magic  
          
        git submodule   
        git submodule init hocus  
        git submodule update hocus
```

**改变子模块的版本
**使用子模块时要提防的错误
    ***git add 确保结尾没有“\”
    ***submodule update 先检查提交
    ***添加新内容到本地自模块版本库,要检出正确分支
    ***修改提交,确保改动被送回远程版本库

!! 6. 高级功能

*压缩版本库
**git gc  整理版本库、优化Git内部存储历史记录
**git gc <--aggressive>  重新计算增量存储单元
*导出版本库
**创建版本快照:git archive 格式类型 指定版本

```
git archive --format=<tar/zip> <--prefix=父目录> 转换格式  
        git archive --format=zip --prefix=mysite-release/ HEAD > mysite-release.zip     
        git archive --format=tar --prefix=mysite-release/ HEAD | gzip > mysite-release.tar.gz
```

*分支变基
**git rebase --continue/--skip/--abort
**git rebase --onto master contacts search
*重现隐藏的历史:git reflog
*二分查找
**git bisect start
**git bisect bad
**git bisect good 1.0
**git bisect reset
**git bisect visualize
**git bisect log
**git bisect replay <文件>
**git bisect run




! Golang 开发技能图谱

!! Go 语言环境搭建
*Go 安装
*GOPATH 与工作空间
*Go 命令
*Go开发工具

!! GO 语言编程基础
*关键词和语法(Language Syntax)
*数据类型(Arrays, Slices and Maps)
*流程控制(if/else,for/range)
*Go 函数(Function)
*面向对象(Methods, Interfaces and Embedding)
*包处理(Packaging and Exporting)
*Go 指针(Using Pointers)
*程序测试(Testing and Debugging)
*对象合成(Composition)
*错误处理(Error Handling)
*标准库(Standard Library)
*反射(Reflection)

!! 并发编程
*Go 并发基础(Concurrency, Race Conditions and Channels)
*并发模式(Concurrency Patterns)

!! Go Web 编程
*Web基础
**Web工作方式
**Go 搭建一个简单的web服务
**Go 的 HTTP 包详解
*表单
**处理表单的输入
**验证表单的输入
**预防跨站脚本
** 防止多次递交表单
**处理文件上传
*数据库
**database/sql接口
**使用MySQL数据库
**使用PostgreSQL数据库
**使用beedb库进行ORM开发
**NOSQL数据库操作
*Session 和数据存储
**Session 和 Cookie
**Go 如何使用 Session
**Session 存储
**预防 Session 劫持
*文本文件处理
**XML 处理
**JSON 处理
**正则处理
**模板处理
**文件操作
**字符串处理
*Web服务
**Socket 编程
**WebSocket
**REST
**RPC
*安全与加密
**预防 CSRF 攻击
**确保输入过滤
**避免 XSS 攻击
**避免 SQL 注入
**存储密码
**加密和解密数据
*国际化和本地化
**设置默认地区
**本地化资源
**国际化站点
*错误处理,调试和测试
**错误处理
**使用GDB调试
**Go怎么写测试用例
*部署与维护
**应用日志
**网站错误处理
**应用部署
**备份和恢复
*如何设计一个Web框架 
**项目规划 
**自定义路由器设计
**Controller 设计
**日志和配置设计
**实现博客的增删改
*扩展Web框架
**静态文件支持
**Session 支持
**表单支持
**用户认证
**多语言支持
**pprof支持

!! Go 应用
*Docker
*Bee Go
*NSQ
*NewSQL

!! Go 实战案例

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
!![[HTML5开发技能图谱]] 

!![[Angular2技能图谱]]


H5开发职位描述:


工作职责: 

岗位职责:

1. 负责前端页面,基础组件的开发与维护,实现产品经理、设计师的业务需求;

2. 了解服务端技术,能够与后端工程师协作,完成数据交互、效果展示等工作;

3. 使用业内主流框架开发页面,保证用户体验,兼顾开发体验。


工作要求 :

1、全日制统招本科及以上学历,年龄35周岁以下;

2、2年以上H5相关开发经验;

3、熟练运用JavaScript语言与HTML5、CSS3等技术,熟悉移动端Web绘图相关高级特性 如canvas webGL CSS3动画效果等; 

4、熟悉模块化、前端编译和构建工具,熟练运用主流的移动端JS库和开发框架,并深入理解其设计原理,例如:jQuery Mobile、Zepto、Angular、Bootstrap等;

5、至少熟练使用reactJS、vue、zepto等其中的1-2种;

6、了解服务端(nodejava或其他语言)或native移动应用开发;

7、对技术有强烈的进取心,具有良好的沟通能力和团队合作精神、优秀的分析问题和解决问题的能力;

8、有小程序开发经验,开源项目开发经验者优先。
职位描述:

1、负责H5 游戏/小游戏的前端开发; 

2、负责接口设计、开发和维护,对游戏的质量和体验负责; 

职位要求: 

1、熟练掌握 JavaScript 语言、ES6 规范、通信协议、网络等前端知识;
 
2、熟悉 H5,熟练至少一款游戏引擎及相应编辑器,如 Cocos2d,Layabox,Egret 等; 

3、对游戏制作充满热情,有一定的游戏产品 sense; 

4、掌握前端常用的构建工具,webpack/gulp/rollup 等; 

5、热爱前端技术,有强烈的好奇心和求知欲,有良好的编码规范; 

6、熟悉微信小游戏,有上线的微信小游戏作品优先; 

7、对游戏引擎有深刻的理解,熟悉 WebGL,了解渲染的原理优先; 

8、熟悉物理引擎,有应用物理引擎的作品优先; 

9、熟悉 ThreeJS, Unity3D,有相关 3D 作品或 DEMO 优先; 

10、熟悉 Koa/Express 等 NodeJS 相关技术优先。
!Hadoop技能图谱: [[Hadoop技能图谱]] 

!!Hadoop岗位描述1:

工作职责:

1.负责公司Hadoop系统的底层搭建,构建公司统一的离线和实时计算平台。 

2.负责公司日志系统及ETL系统的设计和实现。 

3.负责公司数据体系的架构设计和规划,充分发挥公司的数据价值。 

4.跟踪Hadoop生态环境的最新进展。 



任职资格:

1、本科以上学历,熟悉Hadoop生态环境,对Hadoop, Hbase, Hive, Storm等至少一个项目有着深入的了解。 

2.扎实的Java基础,对至少一门动态语言有过使用经验。 

3.熟悉Linux系统常用操作。 

4.对数据有着强烈兴趣,有部署大规模Hadoop集群的经验者优先。 

5.良好的学习能力,保持对新技术的敏感性。



!!Hadoop岗位描述2:

岗位职责: 

1、基于hadoop生态大数据处理平台的数据仓库开发建设以及扩展维护任务。

2、理解业务,根据业务部门需求,充分利用现有数据资源,进行数据提取、整理和挖掘。

3、深入了解业务,从数据层面发现业务问题,并支持解决。

4、配合研发部门对关键数据操作需求进行设计、评估、优化。

5、研究、总结技术经验和方法,作部门内和部门间技术交流。


任职资格: 

1、具有2年以上hive数据仓库的开发经验,熟悉数据仓库建模,ETL
开发方法。

2、了解hadoop生态系统以及hive相关基础设施配置,可独立分析和解决常见故障。

3、了解其他常用数据库系统,有过相关开发经验优先(不限于MYSQL/ORACLE/VERTICA/SQLSERVER)

4、可熟练使用SQL语言在HIVE环境上编写复杂数据处理过程。

5、具有ETL工具以及报表工具的项目开发经验优先,包括不限于Pentaho,Azkaban,Informatica,Qliksense/view, BO,SUPERSET等

6、熟悉Linux系统,了解常用Linux命令。

7、思维缜密,善于沟通和学习。

!!Hadoop工程师职位描述1

岗位职责:

1、基于hadoop生态大数据处理平台的数据仓库开发建设以及扩展维护任务。

2、理解业务,根据业务部门需求,充分利用现有数据资源,进行数据提取、整理和挖掘。

3、深入了解业务,从数据层面发现业务问题,并支持解决。

4、配合研发部门对关键数据操作需求进行设计、评估、优化。

5、研究、总结技术经验和方法,作部门内和部门间技术交流。


任职资格:

1、具有2年以上hive数据仓库的开发经验,熟悉数据仓库建模,ETL开发方法。

2、了解hadoop生态系统以及hive相关基础设施配置,可独立分析和解决常见故障。

3、了解其他常用数据库系统,有过相关开发经验优先(不限于MYSQL/ORACLE/VERTICA/SQLSERVER)

4、可熟练使用SQL语言在HIVE环境上编写复杂数据处理过程。

5、具有ETL工具以及报表工具的项目开发经验优先,包括不限于Pentaho,Azkaban,Informatica,Qliksense/view, BO,SUPERSET等

6、熟悉Linux系统,了解常用Linux命令。

7、思维缜密,善于沟通和学习。

!!Hadoop工程师职位描述2

职位职责: 

1、Hadoop 技术栈的开发和管理,解决实际业务挑战,e.g. YARN, HDFS, MapReduce, Spark, etc; 

2、与开源社区保持交流,发现对业务场景有帮助的特性并引入生产环境,或将经内部验证的特性贡献到社区; 

3、承担千台-万台规模 Hadoop YARN 集群的管理工作,与业务一起解决性能优化、容量规划、预算审计等问题,保障集群高效稳定经济运行。 

职位要求: 

1、思维活跃,熟悉 Hadoop Stack 及相关基础设施; 

2、优秀的设计和编码能力:针对具体的业务场景问题,快速设计和实现解决方案;对工程质量有很高的自我要求;

! Hadoop 家族技能图谱

z作者:[[@张丹|http://blog.fens.me/]]|况客创始人


*Hadoop
*Zookeeper
*Avro
*Chukwa
*Ambari
*Whirr
*Bigtop
*HCatalog
*Hue
*HBase
*Pig
*Sqoop
*Cassandra
*Hama
*Flume
*Giraph
*Oozie
*Crunch
*Hive
*Mahout

----

! Hive 技能图谱
!! Hive介绍
!! Hive系统架构
*MetaStore
**Derby
**MySQL
*HDFS
**/user/hive/warehouse
*MapReduce

!! Hive配置文件
*hive-env.sh
*hive-site.xml
*hive-log4j.properties

!! Hive命令行

*hive-config
*hive shell
**quit,exit
**reset
**set
**add,list,delete FILES
**! <命令>
**dfs <命令>
**HQL
**source FILES
*hive service
**hive-service cli
**hive-service hiveserver
**hive-service metastore
**hive-service hwi
**hive-service jar

!! HiveQL

*语法关键字
**show databases
**show PARTITIONS
**show tables
**create table
**load data(local) inpath
**Select*from
**desc,alert,drop
**limit,as,case when then,union
**like,group by,having
**order by,sort by
**cluster by

*数据类型
**简单类型
***tinyint,smallint,int,bigint
***float,double
***boolean
***string
***timestamp
***binary

 **复杂类型
  ***arry
  ***map
  ***struct

*表
**内部表
**外部表
***HDFS
***HBase
***Cassandra
***DynamoDB

*表查询
**单表查询
**lnner joins
**Outer joins
**Semi joins
**Map joins
**子查询
**视图

!! 数据表设计
*每日一表
*每日一表分区
*按桶分散数据

!! Hive优化
*表分区Partitions
*表存储桶buckets
*表压缩
*索引
**bitmap indexes
*执行计划
*控制Mapper.Reduce数量

!! 访问方式
*Hive Shell
*Java JDBC API
*Thrift Client
*RHive

!! 自定义函数
*自定义函数UDF
*自定义聚合函数UADF

!! Hive安全
*认证
**hive.files.umask.value
**hive.metastore.authorization.storage.checks
**hive.metastore.execute.setugi

*授权
**hive.security.authorization.enabled
**hive.security.authorization.createtable.owner.grants
**hive.security.authorization.createtable.user.grants
	
*权限模型
**User
**Group
**Role

!! Web控制台
*hwi:9999

!! 软件集成
*Zookeeper
*Thrift
*Ooize
*HCatalog
*AWS

!! Hive案例

--

! Mahout 技能图谱
!! Mahou介绍

!! 推荐
*协同过滤
**基于用户协同过滤
**基于物品协同过滤

*相似度矩阵
**欧氏距离
**Pearson距离
**余弦距离cosine
**Spearman’s rank correlation coefficient
**Tanimoto coefficient
**log-likelihood

*近邻算法
**按值取近邻
**按比例取近邻

*推荐算法
**UserBasedRecommender
**ItemBasedRecommender
**SlopeOneRecommender
**SVDRecommender
**KnnltemBasedRecommender
**TreeClusteringRecommender

*算法检验
**全查率Recall
**准查率Precision

*数据模型
**UserID,ltemID,PreferenceValue
**UserID,ItemID

*Hadoop集群部署

!! 聚类
*数据模型
**DenseVector
**RandomAccessSparseVector
**SequentialAccessSpareVector

*距离算法
**欧式距离
**欧式平方距离
**马氏距离
**余弦距离
**Tanimoto距离
**带权重距离

*标准化距离
**normalization

*聚类算法
**k-means
**Canopy
**Fuzzy k-means
**Dirichlet
**Topic moseling on LDA

*Hadoop集群部署

!! 分类
*系统模块
**训练营
**测试营
**分类算法
**训练过程
**建立分类器
**验证模块
**真实数据
**调整参数
**执行分类过程
**预测结果
**检验结果
**自动构建

*工作流
**训练模型
***定义目标变量
***历史数据
***定义预测变量
***分类算法
***通过学习算法训练分类器
**验证模型
***运行测试集
***参数调优
**生产环境
***启动模型对真实数据计算
**分类模型
**分类算法
***Stochastic gradient descent(SGD)
****Online_ogisticRession
****CrossFoldLearner
****Adaptivel_ogisticRegression
***Support vector machine(SVM)
***Naive Bayes
***Complemetary naive Bayes
***Random forests





! Haskell 技能图谱

! Haskell语言编程基础
*类型 (type)
*函数 (function)
*类型类 (type class)
*Prelude中的类型与函数的使用
   
! Haskell语言初级部分
*递归 (recursion)
*列表内包 (list comprehension)
*高阶函数 (higher order function)
*定义类型 (define types)
*定义类型类 (define type class)
   
! Haskell语言中级部分
*使用Monad
*使用IO Monad
*使用State, Writer, Reader Monad
*使用Monad转换器 (monad transformer)
*使用更多的Monad
*使用Monad, 再使用Monad ... 
*MonadIO, MonadBase ... 
*使用Monad与Monad转换器管理代码
   
! Haskell进阶部分

!! 类型系统
*类型系统 (type system)
*类型推断 (type inference)
*Kind推断 (kind inference)
*多态Kind (kind polymorphism)
*可类型化 (typeable)
*单一同态限定 (monomorphism restriction)
*类型家族 (type family)

!!通用编程
*代数数据类型通用编程 (algebric data type generic)
*摒弃模板化代码 (Scrap you boilerplate (SYB))
   
!! 元编程
*模板元编程 (meta template programming)
*准引用 (quasi quotes)
   
! 在工程中使用Haskell

!! 并行、并发还有异步
*确定性并发
*微线程
*Semarphore
*软件事务内存 (software transactional memory)
*通信顺序式进程 (communicating sequential process)
*分布式编程 (distributed programming)

!! 外部函数接口

!! 数据库
!! 前端
!! 网络库


!! 测试
!!! 正确性测试
*单元测试 (unit test)
*随机测试 (QuickCheck)
*穷举测试
*反例搜寻测试
*完全性测试
*SMT精化类型
   
!!! 性能测试
*criterion库
*threadscope的使用
   
! Haskell理论部分
*Arrow
*函数反应式编程
*Haskell的依赖类型
*编程语言原理
*范畴论 (category theory)
! HTML5 开发技能图谱



! 基础篇

*  HTML/CSS

*  JavaScript

*  DOM

! 中级篇

*  数据格式(如JSON、XML)

*  RESTful API交互(如jQuery Ajax,Fetch API,ReactiveX)

*  正则表达式

*  HTML语义化

*  命令行

*  Node.js

*  DIV/CSS

*  SCSS/SASS

*  矢量图形/矢量图形动画(如SVG)

*  单页面应用

! 高级篇

*  ES6/TypeScript

*  CSS3

*  面向对象编程

*  函数式编程

*  MVC/MVVM/MV*

*  安全性(如跨域)

*  授权(如HTTP Basic,JWT等)

! 工程化

*  代码质量(如JSLint,ESLint,TSLint,CSLint)

*  代码分析(如Code Climate)

*  测试覆盖率

*  构建系统(gulp,grunt,webpack等)

*  自动构建(脚本)

! 兼容性

*  跨浏览器测试(如Chrome,IE,Safari,Firefox等)

*  跨平台测试(如Windows,GNU/Linux,Mac OS等)

*  跨设备测试(如Desktop,Android,iOS,Windows phone等)

*  跨版本测试(同一浏览器的不同版本)

! SEO

*  Sitemap(站点地图)

*  内部链接建设

*  MicroData/MicroFormat

*  页面静态内容生成

*  H1,H2,H3和strong使用

*  Title,Description优化

*  页面静态内容生成

! 设计

*  切页面

*  线框图(Wireframe)

*  响应式设计

*  网格布局(Grid Layout)

*  Flexbox布局

! 性能与优化

*  PageSpeed/Yslow优化

*  加载优化(如gzip压缩,缓存等)

*  性能测试(特别是移动Web)

*  可用性

*  压缩(如Minify,Uglify,CleanCSS等)

! 测试

*  单元测试

*  服务测试

*  UI测试

*  集成测试

! 调试

*  浏览器调试

*  Debug工具

*  Wireshark/Charles抓包

*  远程设备调试(如Chrome Inspect Devices)

! 软件工程

*  版本管理(如git,svn)

*  包管理(如npm,bower)

*  依赖管理

*  模块化(如CommonJS,WebPack)

! 前端特定

*  CSS/CSS3动画

*  JavaScript动画

*  Web字体嵌入

*  Icon字体

*  图形和图表

*  CSS Sprite(如glue)

*  DOM操作(如jQuery,React等)

*  模板引擎(如JSX	,Handlebars,JSP,Mustache等)

! iOS 技能图谱
!! 编程语言
*Swift
*Objective-C
*C++/C
*JavaScript

!! 操作系统
*Mac OSX
*iOS
*watchOS
*tvOS
*Linux 常用命令

!! 开发基础
*UI 控件
*Storyboard & Xib
*Core Data & Sqlite
*Core Graphics
*Animation
*Block & GCD
*Test Case 编写
*Framework
*Autolayout
*手势识别,重力感应


!! 开发进阶
*引用计数
*Runtime
*Runloop
*对象模型
*Hybrid
*沙盒机制
*AVFoundation
*Core Text
*逆向与安全
  *class dump
  *IDA Pro
  *Hopper
  *iOS Class Guard

!!设计模式
*MVC
*MVVM
*通知
*代理
*KVO
*工厂模式
*命令模式

!! 函数式编程
*ReactiveCocoa
*RxSwift

!! 开发工具
 *IDE
**Xcode
**AppCode
 *调试工具
**Charles、Wireshark
**Reveal
**Instruments
 *插件
**Alcatraz
**VVDocument
**XVim
**FuzzyAutocompletePlugin
**KSImageNamed-Xcode
 *辅助工具
**xScope
**ImageOptim
**马克鳗
**Dash
**Deploymate
**FauxPas
**PaintCode
 *命令行工具
**xcodebuild、xcode-select
**nomad
**xctool
**fastlane
 *持续集成
**Jenkins
**Travis CI
**Bot

!! 开源项目
*AFNetworking & Alamofire
*Masonry
*SDWebImage
*SwiftyJSON
*JSPatch
*React Native

!! 包管理
 *CocoaPods
 *Carthage
 *Swift Package Manager

!! App 打包上传与审核
 *Apple Developer 网站
 *Itunes Connect 网站
 *IAP
 *加急审核申请
 *打包脚本

!! 第三方服务
*崩溃收集
**Bugly
**Crashlytics
**BugHD
*数据统计
**Google Analytics
**友盟
**MTA
**Flurry
**App Annie
*应用分发
**TestFlight
**蒲公英
**FIR

!!iOS开发工程师岗位描述1:

岗位职责:

1. 参与iOS软件应用开发及优化;

2. 遵循软件开发流程,能独立进行应用的设计和实现;

3. 与团队其他角色紧密配合工作,共同创造稳定易用的产品;



任职要求:

1. 精通C/C++语言或者Objective-C语言;

2. 对内存,多线程、算法、数据结构等有较深的理解;

3. 理解TCP、UDP网络协议,熟悉Socket网络程序设计方法;

4. 具有较强的团队意识与良好的沟通能力,高度责任感,对工作积极严谨,勇于承担压力,较强的学习能力。

!!iOS开发工程师2:

职位职责: 

1、负责新产品业务的功能研发和性能优化,完成高质量编码和测试工作; 

2、和产品经理配合,深度参与手机产品需求讨论,功能定义等; 

3、设计良好的代码结构,不断迭代重构; 

4、承担重点、难点的技术攻坚。 

职位要求: 

1、本科及以上学历,计算机、通信等相关专业; 

2、具有扎实的编程功底,良好的设计能力和编程习惯; 

3、熟练掌握Objective-C,熟悉Swift的优先; 

4、至少精通一门编程语言; 

5、一年以上iOS开发经验,能独立开发iPhoneApp者优先; 

6、有较好的产品意识; 
! Java Software Engineer Skill Map
! Basic
!! Core Java
*Java The Complete Reference Ninth Edition.pdf
**Core
***Basic Language Characteristics
****Data Types
****Syntax
****Control Flow
***Object-Oriented
****Class
****Object
****Method
****Interface
****Inheritance
***Miscellaneous
****Generics
****Autoboxing
****Enumerations
****Annotations
***Parallelism
****Multithreaded Programming
***Functional Programming
****Lambda Expression
****Stream API
**Commonly-used Libraries
***String Handling
****java.lang.String
****StringBuffer and StringBuilder
****Regular Expression
***java.lang.*
***java.util.*
****Collections Framework
****Concurrency Framework
****i18n or g11n
			*****Currency
			*****Data & Time
			*****Language Locale
****Miscellaneous Utilities
***java.io.*
***java.nio.*
***java.net.*
***java.rmi.*
***java.sql.*
***javax.sql.*

!! Algorithms & Data Structure
*Algorithms *
**https://www.coursera.org/learn/java-data-structures-algorithms-2
**https://www.coursera.org/learn/introduction-to-algorithms
*Data Structures *
**https://en.wikipedia.org/wiki/List_of_data_structures
**http://www.tutorialspoint.com/data_structures_algorithms/
*Object Oriented Programming *
**head_first_design_patterns.pdf
**Effective Java 2nd Edition.pdf
*Computer Architecture
**Memory Hierarchy
**Parallelism
**Multiprocessor Systems
*Operating System
**Memory Management
**MemProcess Management
**MemFile System *
*Computer Network
**OSI Model
**TCP/IP
**HTTP / HTTPS
**HTTP 1.X / HTTP 2

!! Essentials
*Linux/Unix
**Shell commands (bash) (http://linuxcommand.org/index.php)
***Text Processing
****AWK / SED
***File Operation
****cd/ls/find/ (Pipe and I/O Redirection)
**VIM / Emacs ( Either of them)
**Shell Script(bash)
*Java Commonly-used 3rd-party Libraries
**Logging
***log4j
***slf4j
***logback
**Unit Test
***Junit
***Mockito
***TestNG
**Code Coverage
***jacoco
***Clover
***EMMA
**Apache Commons
***commons-io
***commons-lang
***commons-math
***commons-codec
***commons-collections
***commons-beanutils
***commons-logging
***...
**Apache HttpComponents
**Google Guava
*Software Engineering
**Project Organization
***Maven
***Gradle
***Ant + Ivy (Optional)
**Versioning
***git
***svn
**UML

!! Front-end (Web)
*Web Development (http://www.w3schools.com)
**HTML
***HTML4
***xhtml
***HTML5
**css
***css2
***CSS3
**Data Representation
***XML
***JSON
***JSONP
**Javascript+ ECMAScript 6
***Basics (https://developer.mozilla.org/en-US/docs/Web/JavaScript)
***Ajax
***AngularJS (plus)
***JQuery (plus)
**TypeScript
**Responsive Web Page development (plus)

!!	Back-end Development(Server side)
*JavaEE
**JSP *
**JSTL
**Java Servlet *
**JavaServer Faces *
**JPA *
**JTA *
**JAX-RS *
**Managed Beans / CDI 1.1/ DI /IOC
**Bean Validation
**JAX-WS
**JavaMail
**JACC
**JASPIC
**Java WebSocket
**Java JSON Processing
**Concurrency Utilities for JavaEE
**Batch processing framework
*Java Containers
**Tomcat / TomEE
**GlassFish
**Jetty
*Java mid-ware
**Spring
***Spring-Framework (Dependency Injection & AOP)
***Spring-Web
***Spring-Data
***Spring-security
***Spring-boot (Micro-service Architecture)
**Struts(MVC)
**SpringMVC
**Hibernate/JPA (Data Persistency)
**MyBatis
*Java Performance Tuning
**java performance the definitive guide.pdf
*Database
**MySQL
**SqlServer
**Oracle
**Nosql
***Memcache
***Redis
***MongoDB
***Neo4j
*Serialization
**Google protobuf
**Apache Avro
*Java RPC
**Apache Thrift
**Motan
*MessageQueue
**AMQP *RabbitMQ
**Apache ActiveMQ
**Apache Kafka
*Messaging
**XMPP
*Searching/Indexing
**Apache Lucene
**Apache Solr
**Elasticsearch
**CoreNLP
*Big Data(Optional)
**Hadoop
***Yarn (MapReduce)
***HDFS
***HBase
***Hive
***Mahout
**Spark
***Spark-Core
***Spark-SQL
***Spark-machine learning
***Spark Streaming
**Apache Storm
*Cloud
**Scalable Architecture
***VM
****OpenStack
***Container
****Docker
**Hands-on
***Amazon AWS
****EC2
****S3
****DynamoDB
*JVM-based Programming Language
**Scala
**Groovy
**Clojure
**Kotlin
**http://www.oracle.com/technetwork/articles/java/architect-languages-2266279.html

!!	IDE
*IntelliJ IDEA
*NetBeans
*Eclipse

!!	Typical Java Applications
*Online Chatting (Web/Desktop System)
*Library Management System (Web System)
*Ticket Booking System(RESTful Web Service)
*HTTP File Downloader (Console / Desktop)
*P2P File Sharing (Console / Desktop)
*Blogging System (Web / REST)
*RDBMS UI Toolkit (Web /Desktop)

!!	Desktop Development
*awt
*Applet
*swing
*Netbeans Platform
*JavaFX
*swt

!!	Mobile Development
*Android
*JavaME
职位描述:

1、主导系统分析与设计,承担核心功能代码编写,开发与维护系统公用核心模块;

2、系统性能优化,主导技术难题攻关,持续提升系统在分布式系统环境下高并发下的高处理性能,解决各类潜在系统技术风险,保证系统的安全、稳定、快速运行;

3、负责指导、培训普通开发工程师,审核开发工程师的设计与研发质量。



学历要求:统招本科及以上学历。

                
任职要求:
1、2年以上Java开发工作经验,优秀应届毕业生亦可;

2、Java编程基础扎实,掌握常用数据结构、算法、设计模式;

3、熟悉数据库知识,熟练掌握SQL语言,了解数据库设计、优化;

4、熟悉web开发,熟练使用springMVC,springBoot,Mybatis或hibernate,dubbo等框架;

5、掌握TCP/IP,HTTP,HTTPS等协议,熟悉加密签名原理和常用算法;

6、较强的表达和沟通能力;工作认真、严谨、敬业,对系统质量有近乎苛刻的要求意识; 有很强的分析问题和解决问题的能力,有强烈的责任心;

7、熟悉分布式、多线程及高性能的设计与编码及性能调优;
职位描述:

1、参与新产品的构架设计和详细设计; 

2、参与建设新产品的管控系统设计与开发,多租户支持、Region化部署与管控等。 

3、技术预研和技术难点攻关,保障产品的可用性、稳定性、和可扩展性。 


任职要求:

1. 本科或以上学历,计算机软件或相关专业,6年以上互联网公司开发经验,工作年限非核心必要条件。 


2. 熟悉云计算相关技术,了解计算虚拟化技术及其相关的机制与框架,了解网络虚拟化技术相关原理,熟悉云管理平台方案或者其他厂家的虚拟化技术并有实际开发经验者优先

3. 精通Java技术,熟悉并善于使用基础Java数据结构合理解决技术问题,对JVM原理有扎实的理解,有Java并发编程经验,有分布式系统实际开发经验。 

4. 对Spring、IBatis等开源框架熟悉,并能了解它的原理和机制。 

5. 了解分布式技术原理,熟练使用分布式缓存,消息队列等中间件。
 
6. 熟悉如何构建高可用、高并发的应用服务,熟悉并且使用过常见的服务治理框架,能够了解相关框架原理。 

7. 具备对复杂业有良好的抽象和建模能力,熟悉各种设计模式。 

8. 具备基础的应用运维能力,熟悉Linux操作系统下的常见命令及工具,能够利用相关工具定位线上故障,完成性能调优。
! Kubernetes 技能图谱

!! Container basics (容器技术基础)
* Kernel
* Cgroups
* Userspace runtime
* Image
* Registry

! Kubernetes architecture (Kubernetes 架构)

!! Worker
!!! Kubelet
*Runtime (容器运行时)
**CRI (Container Runtime Interface)
**Runtime shims (容器运行时插件)
***Cri-containerd (containerd)
***Dockershim (Docker)
***Cri-o (runC)
***Rktlet (rkt)
***Frakti (runV)
*Networking
** CNI (Container Network Interface)
** Network plugins (网络插件)
 ***Flannel
 ***Calico
 ***OVS
 ***SR-IOV
 ***macvlan/ipvlan
 ***Opencontrail
 ***Weave
*Storage
** CSI  (Container Storage Interface)
** Volume plugins (存储插件)
 ***NFS
 ***Cinder
 ***GlusterFS
 ***Ceph
 ***Local path
*Kube-proxy
** Iptables 转发链与随机模式
** ipvs 负载均衡

!! Master
*API server
** Watch & Informer (Watch 和通知框架) 
** Admission Plugin(权限控制插件)
** RBAC plugin (基于角色的访问控制插件)
*Controller manager
** Reconcile (控制循环与状态协调机制)
*Scheduler
** Custom scheduler (自定义调度器)
** Custom algrhrim (自定义调度算法)
*Etcd
** Etcd operator

!! Kubernetes workloads (Kubernetes 作业管理)
*ReplicaSet (容器副本)
*Deployment (常规作业发布)
** Rolling update (自动的滚动更新)
** Pause/resume (可控的更新流程)
** Canary deploy (金丝雀发布)
** Rollback (版本回滚)
*DaemonSet (Daemon 作业)
*StatefulSet (有状态任务)
*Job (一次性任务)
*CronJob (定时任务)

!! Kubernetes applications management (Kubernetes 应用配置)
*Service (服务发现)
** Publish service(对外暴露 Service)
** Nginx/HAproxy service(自定义 Service)
** External Load Balancer
*ConfigMap (应用配置管理)
*Ingress (7层服务发现)
*Secret (加密信息管理)
*Headless Service(DNS 服务发现)
*External Load Balancer

!! Kubernetes operations (Kubernetes 安装与运维)
*Installation
** Kubeadm
** Minikube (本地部署工具)
** Kops (云端部署工具)
*Maintenances
** GC (垃圾清理)
 ***Container GC
 ***Image GC
*Upgrades 
*Troubleshooting
** etcd admin
 ***Key-value CRUD(键值对操作)
 ***Metrics monitoring (Metrics 监控)
 ***Cluster design(集群规划)
 ***Disaster Recovery (灾难恢复,backup 和 restore)
** Iptables rules

!! Kubernetes extensions/add-ons (Kubernetes 扩展和插件)
*Custom Resources Definition (自定义 Kubernetes API 对象)
** Customized controller (自定义 API 对象控制器)
** Workqueue (自定义 API 对象任务队列)
*Kube-dns
** SkyDNS
*Fluentd (日志收集)
** Fluent-bit 
*Heapster (容器集群监控)
*Istio(微服务路由和负载均衡)
*Federation (集群联邦)
*Helm (kubernetes application package)

!! Kubernetes CI/CD
*Spinnaker
__''什么是MongoDB''__

是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

__''历史''__

* 2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出。
* 2012年05月23日,MongoDB2.1 开发分支发布了! 该版本采用全新架构,包含诸多增强。
* 2012年06月06日,MongoDB 2.0.6 发布,分布式文档数据库。
* 2013年04月23日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强以及bug修复。
* 2013年08月20日,MongoDB 2.4.6 发布。
* 2013年11月01日,MongoDB 2.4.8 发布。

__''主要特点''__

* MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
* 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
* 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
* 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
* Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
* MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
* Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
* Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
* Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
* GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
* MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
* MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
* MongoDB安装简单。

__''语言支持''__

MongoDB有官方的驱动如下:

* C
* C++
* C# / .NET
* Erlang
* Haskell
* Java
* JavaScript
* Lisp
* node.JS
* Perl
* PHP
* Python
* Ruby
* Scala

__''MongoDB 工具''__

有几种可用于MongoDB的管理工具。

''监控''

* MongoDB提供了网络和系统监控工具Munin,它作为一个插件应用于MongoDB中。
* Gangila是MongoDB高性能的系统监视的工具,它作为一个插件应用于MongoDB中。
* 基于图形界面的开源工具 Cacti, 用于查看CPU负载, 网络带宽利用率,它也提供了一个应用于监控 MongoDB 的插件。

''GUI''

* Fang of Mongo – 网页式,由Django和jQuery所构成。
* Futon4Mongo – 一个CouchDB Futon web的mongodb山寨版。
* Mongo3 – Ruby写成。
* MongoHub – 适用于OSX的应用程序。
* Opricot – 一个基于浏览器的MongoDB控制台, 由PHP撰写而成。
* Database Master — Windows的mongodb管理工具
* RockMongo — 最好的PHP语言的MongoDB管理工具,轻量级, 支持多国语言.

!!Mondb岗位描述:

主要职责:

1、Mongodb的日常运维技能,包括环境部署、配置管理、监控报警、备份恢复和故障处理;

2、完成指定系统或子系统的技术设计工作;

3、完成指定任务范围内的编码开发工作;

4、完成指定任务的文档编写工作。



任职资格:

1、本科及以上学历;

2、具备2年及以上Mongodb相关工作经验;

3、深刻理解mongodb数据库底层原理,

4、具备MONGODB性能调优的能力,熟练掌握高可用及分库、分表的水平扩展方案

5、有源码级的解决能力优先。

6、有云计算、云数据库相关工作经验的优先。

''MySQL简介''

是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

__''什么是数据库?''__

* 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
* 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
* 我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
* 所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

''RDBMS即关系数据库管理系统(Relational Database Management System)的特点:''

* 数据以表格的形式出现
* 每行为各种记录名称
* 每列为记录名称所对应的数据域
* 许多的行和列组成一张表单
* 若干的表单组成database

__''RDBMS(即关系数据库管理系统) 术语''__

在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:

* 数据库: 数据库是一些关联表的集合。
* 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
* 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
* 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
* 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
* 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
* 外键:外键用于关联两个表。
* 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
* 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
* 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
* MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:
* 表头(header): 每一列的名称;
* 列(col): 具有相同数据类型的数据的集合;
* 行(row): 每一行用来描述某条记录的具体信息;
* 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
* 键(key): 键的值在当前列中具有唯一性。

__''MySQL数据库特点''__

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

* MySQL 是开源的,所以你不需要支付额外的费用。
* MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
* MySQL 使用标准的SQL数据语言形式。
* MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
* MySQL 对PHP有很好的支持,PHP是目前最流行的Web开发语言。
* MySQL 支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
* MySQL 是可以定制的,采用了GPL协议,你可以修改源码来开发自己的 MySQL 系统。

!!MySQL岗位描述

工作职责:

负责MySQL服务器规划、实施和部署

负责MySQL服务器故障处理和性能优化

负责MySQL服务器性能、SQL慢查询和日志监控

负责业务SQL语句变更审核,协助业务开发人员优化SQL语句

''任职要求'':

熟悉公有云(aws/阿里云/腾讯云)数据库产品和技术

熟悉常用linux系统管理技能

擅长mysql故障排错和性能调优

掌握至少一门(python/go/shell)编程语言

擅长MySQL索引优化,SQL语句优化

拥有大规模mysql服务器维护经验优先
!!第一份职位描述

工作职责

智能算法研究,快速实现前沿工作,创新理论框架

- 根据客户场景,完成算法设计,实现和调优,推进算法落地

- 负责自然语言理解、深度学习算法等领域的研发工作,保持算法在工业界和学术界的领先

- 追踪技术前沿,判断最新技术对产品的影响


任职要求

- 熟悉Linux操作系统,熟悉C++及Python/Bash开发 ,本科及本科学历以上

- 熟悉CNN等深度学习技术,有caffe/tensorflow/pytorch使用经验更佳

- 对机器学习、计算机视觉、自然语言理解等领域有强烈好奇心

- 有优秀的分析问题和解决问题的能力,乐于挑战尖端研究课题

- 良好的沟通能力和团队合作精神。


!!第二份职位描述:

职位描述:
职位描述:

1、利用相关技术和算法,提供文本分析相关的基础方案与服务; 

2、针对海量文本内容进行中文分词、语义识别、自动聚类等文本挖掘工作; 

3、负责搭建相关的机器学习 & 大数据计算平台;

4、负责数据和业务的紧密集合。

任职要求:

1、熟练掌握自然语言处理NLP相关理论与技术方法;

2、熟练掌握使用java或python,数学正则,至少掌握一种脚本语言;

3、熟悉中英文分词、词性标注、实体识别、句法分析、自动文本分类,关键值提取等自然语言处理技术,熟悉语义分析方法和技术(相似度计算、本体理论、语义推理等);

4、熟悉人机对话的前沿方向和研究方向;

5、熟悉了解人工智能、机器学习等领域的前沿方向与研究动向;

6、具备将机器学习与自然语言处理的理论转化为实践的能力;

7、具有相关项目研发经验者(项目主要参与人员)优先;

8、1年及以上经验,硕士学历以上。
职位描述:

1、参与公司对外产品的前后端基础架构的设计与实现,提供稳定可靠的服务; 

2、负责内部平台的前后端架构设计与实现;

3、负责技术攻关和创新技术引用,解决产品开发过程中的高性能,高并发和高可靠性问题。



职位要求:

1、 3年以上互联网开发经验,对 Unix/Linux 有深入了解;

2、 出色的编码能力,精通 Node.js,熟悉常用的算法,熟悉开源框架,解决问题能力强;

3、 熟练掌握前端框架 React/VUE,熟悉前端工程化及组件化开发模式;

4、 对后端程序性能优化有丰富经验;

5、 掌握 Redis、MongoDB、MySQL 等存储系统原理及应用;

6、 对分布式计算,分布式存储的架构设计理念和动机有一定理解;

7、 对 HTTP 协议有深刻的理解,熟悉 TCP/IP 等网络协议;

8、 加分项:有 Python、Go、PHP 开发经验;参与或拥有开源项目,为开源社区贡献过代码;有大规模后端服务的设计和开发方面经验。

 !Node.js 开发技能图谱

!! Node.js 语言环境搭建

*Node.js 安装(3m大法:nvm、npm、nrm)
*Node.js 命令
*Node.js开发工具(推荐vscode)

!! Node.js 语言编程要点

*使用Node.js 4.x或5.x里的ES 6特性,如果想玩更高级的,可以使用[babel](babeljs.com)编译支持ES 7特性
*合理使用[[standard|https://github.com/feross/standard]] 代码风格约定
*ES 6语法
*需要大家重视OO(面向对象)写法的学习和使用

!! 核心模块

*Buffer
*Child Processes
*Cluster
*Crypto
*DNS
*Domain
*Events
*File System
*HTTP
*HTTPS
*Net (TCP)
*OS
*Path
*Process
*Punycode
*Query Strings
*Readline
*Stream
*String Decoder
*TLS/SSL
*TTY
*UDP
*URL
*VM
*ZLIB

!! Koa Web 编程

*koa 1.0 && 2.0 (koa2.0刚发布不久,喜欢折腾的可以考虑)
*mongoose(mongodb)
*bluebird(Promise/A+实现、Generator、Async)
*jade(视图层模板)
*ava(测试)
*vscode(调试)

!! 了解http协议,尤其是表单和ajax传值,在req里如何接收

*绝对地址和相对地址
*querystring
*url 和 uri
*http status code
*http verbs
*req取参数的3种方法
*3种不同类型的post
*命令行玩法
*supertest用法
*what is rest?

!! 了解db相关操作,先以mongoose为主

*crud(增删改查)
*了解分页
*了解关系(1对1,1对多)在mongoose里如何实现
*了解statics方法和methods的区别
*了解pre和post的差别
*了解mongoose的插件机制
*了解mvc里m的作用,以及什么样的代码该放到模型里
*了解索引优化
*了解mongodb的部署

!! 了解Generator、Async和Promise/A+规范,合理规避回调陷阱

*了解的node的异步、generator和async(ES7)
*了解异步的恶心
*了解异步基本场景,比如waterfall这样的路程使用async如何处理
*了解q和bluebird用法(如果有angularjs经验,推荐q,其他只推荐bluebird)
*了解bluebird的promisifyAll用法
*了解如何重构流程,以及代码的可读性

!! 使用tdd/bdd测试,最小化问题

*理解最小问题思想,培养程序员该有的强大的内心
*ava的基本用法
*理解断言的用法(注内置断言,不需要assert/should/expect等)
*理解测试生命周期
*理解箭头函数、generator、promise等用法
*理解如何模拟数据
*理解http下的supertest测试
*理解测试覆盖率
*理解基于gulp自动化测试方法

!! 你无论如何都要会的:调试

*node debug(太挫了,如果不是c,了解gdb、adb之类的人不推荐用)
*node-inspector(推荐4※)
*tdd/bdd(推荐5※)
*vscode编辑器(推荐5※)

!! Node.js 应用

*网站(如express/koa等)
*im即使聊天(socket.io)
*api(移动端,pc,h5)
*http proxy(淘宝首页)
*前端构建工具(grunt/gulp/bower/webpack/fis3...)
*写操作系统(NodeOS)
*跨平台打包工具(nw.js、electron)
*命令行工具(比如cordova)
*编辑器(vscode)

!! Node.js 实战案例

! ''OpenResty 技术图谱''

!!Basic Concepts
*HTTP / HTTP2
*RESTful API & API GateWay
*Microservice
*Domain Specific Language(DSL)
*C10K & C1M
*non-blocking & asynchronous I/O
*event loop
*I/O mutiplexing
*Streaming processing
*coroutine
*Test Driven Development(TDD)

!!Around Tech Stack
*MySQL
*PostgreSQL
*Redis
*OpenSSL
*regex
*sregex

!!Testing
*TDD & Unit Testing
*Test::Nginx
*curl & ab & wrk

!!Debugging
*debugging log
*core dump
*Dynamic Tracing
*SystemTap
*Flame Graph
*on-CPU & off-CPU
*nginx-systemtap-toolkit
*stapxx
*nginx-gdb-utils
*valgrind

!!Caching
*ngx.shared.DICT
*lua-resty-lrucache
*dog-pile effect
*lua-resty-lock
*lua-resty-shcache
*ngx_srcache

!!Limiting Traffic
*lua-resty-limit-traffic
*limit-count
*limit-rate
*limit-concurrency

!!NGINX
*log
*static file
*load balancer
*proxy
*phase
*tuning for performance
*if is evil
*Stream module

!!LuaJIT
*Standard Lua
*JIT(Just-In-Time Compiler)
*NYI (Not Yet Implemented)
*ffi.\* API
*jit.\* Library

!!ngx\_lua
*directives
*NGINX API for Lua(ngx.\*,tcpsock.\*,coroutine.\*)
*resty-core
*semaphore
*balancer\_by\_lua
*ssl\_certificate\_by\_lua
*stream-lua-nginx-module
*cosocket TCP/UDP
*hot load lua code
*OPM
*resty client

!!Resources
*awesome-resty
iVBORw0KGgoAAAANSUhEUgAABUwAAAO4CAIAAACGSSusAAALr2lDQ1BJQ0MgUHJvZmlsZQAASA2tV2dYU0kXnltSgCSUBASkBJAuGHqTEnpEehNshCSQQAgxCSjYEVHBtYsIKFJWQRRcXQFZK6JYWHtvCypW1kVdbKh8k+iqz/N9+++7ee7cd95555w5Z27ucwYA6jauVCpGtQDIkShkcWGBzCkpqUxSH0AADnThTeDy5FJ2TMxk8K/Xm2tQDa/LDkpb/yr73wNafIGcBwASDIfT+XJeDsSNAKCdPKlMAQDOh7zFbIVUiZdDzJDBBUJcrcSZX/AeJU7/grtVmoS4IKi5AQCZwuXKMgGgPIQ8M5+XCe1QcYhZEr5IArErxH48IRf6ocIxMD79h7mZP2AuN/2bHS438xv+sn44EzoLFsmlYm6BqvP/bHLEeTBHqssEthRZXlwifNJgrubIs+MjvuISHjckHmK4m8gGoYCj3DMYK9IgVQTGfdU0ZshClXOVmjZhXvg/dk6KFJyEr5or2bkRSr061NznyYNgvlW+GiXpUdEQUyA/mJedyP7Kv+MLgkP+0chy475qUGKhMCEZ8kS4nzry/HilRgdi/UJhUNRX3i6LOykGYmgTZQnEYV/9ohOlihilHWWMjRJxlDIWPagJFci/x6gQJoRDHsaCTlPIEv6ZK84QhXK+2swXysKVvNJ+kVSseo9VNrmykDDIMyC/SiBJVOYN8mgdnxuszCeMHd2DG+F+uC/uiQfCZwAIBiIgB1IgBgKQBWIAF0iAArZi+OMSHhEugUiQCzkRZHOB7IeeAOTBfgQcyYJzxaAQiQXxgAeEsCcDOSB3P6Or4Sqlg9yjgHy2SgV5nAF9s3F/3Ad3w70AG2QAEWoAPWZV5BZ4JwlBILQoBny4qmzwUGkpw0/Js3pY9awDrOusQVYDVoN1YL3YIawdqgUq70r9N980Ms2BxqbZ0Rg0Es2IZglCoC2ZKrYoaLMAxqIAb0AqZOTQF4yP6Eq0hrctYMJnMNGL6ER0/yE3XDhHGcMjVWRAIZij/F+BoFxpgUyUKVQw2fArIWByJDzH8UxnlpM7AMpvjlIDwOtY1bcE0ev9zingfvj+CQB24TuXKgdgF7Q7xuU7Z6MPgO5WADrseHmy/C/2lH91QIC7qQl32gCYAAtgAxyAM3AHPiAAxjoJRIMEkAJmqDKSA9c8G8wDi0EJKANrwEZQCWpAPWgEu8Fe0A4OgmPgJDgLLoCr4DboAwPgORiC2RlBEISEUBE6YoCYIpaIPeKMeCJ+SAgyGYlDUpA0JBORIHnIPGQJUoasQyqRWqQJ+QU5gBxDTiMXkZtIP/IUeYV8QDGUgjJQY9QKnYB6omw0Ak1Ap6OZ6Cy0EC1GV6EVaB26C21Dj6Fn0atoH/ocHcYApoHpYWaYA+aJBWHRWCqWgcmwBVgpVo7VYS1YJ9aDXcb6sEHsPU7E6TgTd4BvVDieiPPwWfgCfCVeiTfibXg3fhnvx4fwzwQqwYhgT/AmcAhTCJmE2YQSQjlhO2E/4QThKmGA8IZIJOrBvfcghhNTiFnEucSVxC3EVuJR4kXiA+IwiUQyINmTfEnRJC5JQSohbSbtIh0hXSINkN6RNcimZGdyKDmVLCEXkcvJO8mHyZfIj8kjalpqlmreatFqfLUCtdVqDWqdaufVBtRG1LXVrdV91RPUs9QXq1eot6ifUL+j/lpDQ8Ncw0sjVkOksUijQmOPximNfo33FB2KHSWIMo2SR1lF2UE5SrlJeU2lUq2oAdRUqoK6itpEPU69R31Ho9McaRwan7aQVkVro12ivdBU07TUZGvO0CzULNfcp3lec1BLTctKK0iLq7VAq0rrgNZ1rWFturaTdrR2jvZK7Z3ap7Wf6JB0rHRCdPg6xTr1Osd1HtAxugU9iM6jL6E30E/QBxhEhjWDw8hilDF2M84xhnR1dF11k3Tn6FbpHtLt08P0rPQ4emK91Xp79a7pfRhjPIY9RjBmxZiWMZfGvNUfqx+gL9Av1W/Vv6r/wYBpEGKQbbDWoN3griFuaGcYazjbcKvhCcPBsYyxPmN5Y0vH7h17ywg1sjOKM5prVG/UazRsbGIcZiw13mx83HjQRM8kwCTLZIPJYZOnpnRTP1OR6QbTI6bPmLpMNlPMrGB2M4fMjMzCzfLMas3OmY2YW5snmheZt5rftVC38LTIsNhg0WUxNM50XOS4eeOax92yVLP0tBRabrLssXxrZW2VbLXMqt3qibW+Nce60LrZ+o4N1cbfZpZNnc0VW6Ktp2227RbbC3aonZud0K7K7rw9au9uL7LfYn9xPGG813jJ+Lrx1x0oDmyHfIdmh35HPcfJjkWO7Y4vJoybkDph7YSeCZ9Zbiwxq4F120nHaZJTkVOn0ytnO2eec5XzFReqS6jLQpcOl5eu9q4C162uN9zobpFuy9y63D65e7jL3Fvcn3qM80jzqPa47snwjPFc6XnKi+AV6LXQ66DXe293b4X3Xu+/fBx8sn12+jyZaD1RMLFh4gNfc1+ub61vnx/TL81vm1+fv5k/17/O/36ARQA/YHvAY7YtO4u9i/0ikBUoC9wf+DbIO2h+0NFgLDgsuDT4XIhOSGJIZci9UPPQzNDm0KEwt7C5YUfDCeER4WvDr3OMOTxOE2doksek+ZO6IygR8RGVEfcn202WTe6MRCMnRa6PvBNlGSWJao8G0Zzo9dF3Y6xjZsX8FkuMjYmtin0U5xQ3L64nnh4/M35n/JuEwITVCbcTbRLzEruSNJOmJTUlvU0OTl6X3DdlwpT5U86mGKaIUjpSSalJqdtTh6eGTN04dWCa27SSademW0+fM/30DMMZ4hmHZmrO5M7cl0ZIS07bmfaRG82t4w6nc9Kr04d4QbxNvOf8AP4G/lOBr2Cd4HGGb8a6jCeZvpnrM58K/YXlwkFRkKhS9DIrPKsm6212dPaO7FFxsrg1h5yTlnNAoiPJlnTnmuTOyb0otZeWSPtmec/aOGtIFiHbLkfk0+UdCgYs7nrzbPKW5vXn++VX5b+bnTR73xztOZI5vQV2BSsKHheGFv48F5/Lm9s1z2ze4nn989nzaxcgC9IXdC20WFi8cGBR2KLGxeqLsxf/XsQqWlf095LkJZ3FxsWLih8sDVvaXEIrkZVcX+azrGY5vly0/NwKlxWbV3wu5ZeeKWOVlZd9XMlbeeYnp58qfhpdlbHq3Gr31VvXENdI1lxb67+2cZ32usJ1D9ZHrm/bwNxQuuHvjTM3ni53La/ZpL4pb1NfxeSKjs3jNq/Z/LFSWHm1KrCqtdqoekX12y38LZe2BmxtqTGuKav5sE207UZtWG1bnVVdeT2xPr/+UUNSQ8/Pnj83bTfcXrb90w7Jjr7GuMbuJo+mpp1GO1c3o815zU93Tdt1YXfw7o4Wh5baVr3Wsj1gT96eZ7+k/XJtb8Tern2e+1p+tfy1ej99f2kb0lbQNtQubO/rSOm4eGDSga5On879vzn+tuOg2cGqQ7qHVh9WP1x8ePRI4ZHho9Kjg8cyjz3omtl1+/iU41e6Y7vPnYg4cepk6MnjPeyeI6d8Tx087X36wBnPM+1n3c+29br17v/d7ff959zPtZ33ON9xwetC58WJFw9f8r907HLw5ZNXOFfOXo26evFa4rUb16dd77vBv/Hkpvjmy1v5t0ZuL7pDuFN6V+tu+T2je3V/2P7R2ufed6g/uL/3fvz92w94D54/lD/8OFD8iPqo/LHp46Ynzk8OPg19euHZ1GcDz6XPRwZL/tT+s/qFzYtf/wr4q3doytDAS9nL0VcrXxu83vG3699dwzHD997kvBl5W/rO4F3je8/3PR+SPzwemf2R9LHik+2nzs8Rn++M5oyOSrkyrqoWwGCLZmQA8GoHrPVTAKBfgGUe7cuZQKVAvpxjIFaeZ1Rnmv/GX84NKj2sXGph/ZkMa8WIpQBU9gNg3QLttgEQQwUgwQugLi7fbtUUAOQZLs4qiFACYWlyb3T0tRUApPUAfFozOjpSNzr6qR7WOncAOCr5DwCGMruHKWuqAAAACXBIWXMAABYlAAAWJQFJUiTwAAABnmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xMzU2PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjk1MjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo7T/IdAABAAElEQVR4AeydBXgURxvHY4QQJMQNCQSCu7u7uxWXUqOlgnxQoIVSKpQqlFK8uLu7u4SEEE8IcXcSQr7/sWHZ7F2O5BKSXPK/554wO/OO/fbY2XfmnXd009PTdfghARIgARIgARIgARIgARIgARIgARLQfgJ62t8F9oAESIAESIAESIAESIAESIAESIAESEBBgEo+fwckQAIkQAIkQAIkQAIkQAIkQAIkUEQIUMkvIjeS3SABEiABEiABEiABEiABEiABEiABA2UEqSkvlCMZQwIkQAIkQAIkQAIkQAIkQAIkQAIkUDgJGJTQ19XVRdvkSj40/Nnd1hbORrNVJEACJEACJEACJEACJEACJEACJEACygQ++r2/YwNbxNNcXxkOY0iABEiABEiABEiABEiABEiABEhAKwnIV/LFTnQYVq9SLSvxkgESIAESIAESIAESIAESIAESIAESIIFCRSAxNnnPr1ekTcpSyYeGX7tVJakowyRAAiRAAiRAAiRAAiRAAiRAAiRAAoWHQGxkkqwxNNeXAeElCZAACZAACZAACZAACZAACZAACWgrASr52nrn2G4SIAESIAESIAESIAESIAESIAESkBGgki8DwksSIAESIAESIAESIAESIAESIAES0FYCVPK19c6x3SRAAiRAAiRAAiRAAiRAAiRAAiQgI0AlXwaElyRAAiRAAiRAAiRAAiRAAiRAAiSgrQSo5GvrnWO7SYAESIAESIAESIAESIAESIAESEBGgEq+DAgvSYAESIAESIAESIAESIAESIAESEBbCVDJ19Y7x3aTAAmQAAmQAAmQAAmQAAmQAAmQgIwAlXwZEF6SAAmQAAmQAAmQAAmQAAmQAAmQgLYSoJKvrXeO7SYBEiABEiABEiABEiABEiABEiABGQEq+TIgvCQBEiABEiABEiABEiABEiABEiABbSVAJV9b7xzbTQIkQAIkQAIkQAIkQAIkQAIkQAIyAlTyZUB4SQIkQAIkQAIkQAIkQAIkQAIkQALaSoBKvrbeObabBEiABEiABEiABEiABEiABEiABGQEqOTLgPCSBEiABEiABEiABEiABEiABEiABLSVAJV8bb1zbDcJkAAJkAAJkAAJkAAJkAAJkAAJyAhQyZcB4SUJkAAJkAAJkAAJkAAJkAAJkAAJaCsBKvnaeufYbhIgARIgARIgARIgARIgARIgARKQEaCSLwPCSxIgARIgARIgARIgARIgARIgARLQVgJU8rX1zrHdJEACJEACJEACJEACJEACJEACJCAjQCVfBoSXJEACJEACJEACJEACJEACJEACJKCtBKjka+udY7tJgARIgARIgARIgARIgARIgARIQEaASr4MCC9JgARIgARIgARIgARIgARIgARIQFsJUMnX1jvHdpMACZAACZAACZAACZAACZAACZCAjACVfBkQXpIACZAACZAACZAACZAACZAACZCAthKgkq+td47tJgESIAESIAESIAESIAESIAESIAEZASr5MiC8JAESIAESIAESIAESIAESIAESIAFtJUAlX1vvHNtNAiRAAiRAAiRAAiRAAiRAAiRAAjICVPJlQHhJAiRAAiRAAiRAAiRAAiRAAiRAAtpKgEq+tt45tpsESIAESIAESIAESIAESIAESIAEZASo5MuA8JIESIAESIAESIAESIAESIAESIAEtJUAlXxtvXNsNwmQAAmQAAmQAAmQAAmQAAmQAAnICFDJlwHhJQmQAAmQAAmQAAmQAAmQAAmQAAloKwEq+dp659huEiABEiABEiABEiABEiABEiABEpARoJIvA8JLEiABEiABEiABEiABEiABEiABEtBWAlTytfXOsd0kQAIkQAIkQAIkQAIkQAIkQAIkICNAJV8GhJckQAIkQAIkQAIkQAIkQAIkQAIkoK0EqORr651ju0mABEiABEiABEiABEiABEiABEhARoBKvgwIL0mABEiABEiABEiABEiABEiABEhAWwlQydfWO8d2kwAJkAAJkAAJkAAJkAAJkAAJkICMAJV8GRBekgAJkAAJkAAJkAAJkAAJkAAJkIC2EqCSr613ju0mARIgARIgARIgARIgARIgARIgARkBKvkyILwkARIgARIgARIgARIgARIgARIgAW0lQCVfW+8c200CJEACJEACJEACJEACJEACJEACMgJU8mVAeEkCJEACJEACJEACJEACJEACJEAC2kqASr623jm2mwRIgARIgARIgARIgARIgARIgARkBKjky4DwkgRIgARIgARIgARIgARIgARIgAS0lQCVfG29c2w3CZAACZAACZAACZAACZAACZAACcgIUMmXAeElCZAACZAACZAACZAACZAACZAACWgrASr52nrn2G4SIAESIAESIAESIAESIAESIAESkBGgki8DwksSIAESIAESIAESIAESIAESIAES0FYCVPK19c6x3SRAAiRAAiRAAiRAAiRAAiRAAiQgI0AlXwaElyRAAiRAAiRAAiRAAiRAAiRAAiSgrQSo5GvrnWO7SYAESIAESIAESIAESIAESIAESEBG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
岗位职责:

1. 负责需求分析并进行数据库的架构设计

2. 负责项目的存储过程设计、代码开发

3. 负责项目数据库SQL优化

4. 负责批量运行模块设计及开发

岗位要求:

1. 3年以上Oracle开发经验,有银行保险类经验者优先;

2. 计算机、软件工程等相关专业本科及以上学历;

3. 熟悉SHELL语言;

4. 精通ORACLE,精通sql语言;

5. 良好的沟通能力和团队合作能力;

6. 良好的文档协作和阅读能力。
''__什么是oracle__''

Oracle是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

__''Oracle特点''__

 ''完整的数据管理功能:'' 

* 数据的大量性
* 数据的保存的持久性
* 数据的共享性
* 数据的可靠性
''完备关系的产品:''

* 信息准则---关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示;
* 保证访问的准则
* 视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
* 数据物理性和逻辑性独立准则

''分布式处理功能:''

* ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的关系型产品构成。
* 用ORACLE能轻松的实现数据仓库的操作。

''这是一个技术发展的趋势,不在这里讨论。''

''优点''

* 可用性强
* 可扩展性强
* 数据安全性强
* 稳定性强
职位描述:
工作职责:

1、参与技术方案和系统设计评审,提高整体代码质量;

2、优化开发流程,提高开发效率;

3、对现有系统进行分析、规划、改进和升级;

4、推进团队在相关领域的前瞻性技术方案研究,保持公司技术领先并能够快速响应业务需要。 

任职要求:

1、本科及以上学历,计算机或者相关专业;

2、具有良好的系统需求分析能力和系统架构能力,熟悉规范的软件开发流程,有良好的配置管理、版本管理、代码编写习惯;

3、熟悉WEB及服务器端开发技术,熟悉php、python、java、javascript等语言至少一种,熟悉MYSQL数据库;

4、熟悉Linux系统管理,熟练使用Linux工具,熟练掌握 Shell编程;

5、熟悉面向对象程序设计和常用设计模式;
__''什么是Python ''__

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

''Python 是一种解释型语言'': 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

''Python 是交互式语言'': 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。

''Python 是面向对象语言:'' 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

''Python 是初学者的语言'':Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

__''Python 发展历史''__

* Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。

* Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。

* 像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。

* 现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。

''__Python 特点__''

''1.易于学习:''Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

''2.易于阅读:''Python代码定义的更清晰。

''3.易于维护:''Python的成功在于它的源代码是相当容易维护的。

''4.一个广泛的标准库:''Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。

''5.互动模式:''互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。

''6.可移植:''基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

''7.可扩展:''如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

''8.数据库:''Python提供所有主要的商业数据库的接口。

''9.GUI编程:''Python支持GUI可以创建和移植到许多系统调用。

''10.可嵌入: ''你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

!!python开发职位描述1

职位职责: 

1、负责今日头条沟通系统研发,包括但不限于即时通讯(IM)工具;
 
2、负责效率工具的后台开发工作,具体包括需求分析、文档撰写、设计编码、测试运维、效果追踪等工作; 

3、负责高质量的设计和编码;承担重点、难点的技术攻坚; 

4、参与产品讨论和开发实现。 

5、主要语言为Python/Golang。 

职位要求: 

1、良好的设计和编码品味,热爱写代码; 

2、较好的产品意识,愿意将产品效果做为工作最重要的驱动因素;
 
3、掌握WEB后端开发技术: 协议、架构、存储、缓存、安全等; 

4、积极乐观,认真负责,乐于协作。


!!python开发职位描述2

岗位职责:

1.负责产品核心后端服务API Gateway的设计、开发、优化;

2.对外提供 SDK 和 API,  并且能提供Authentication, Rate limit等方案;

任职要求:

1. 具有良好的逻辑和理解能力,基本的沟通表达能力;

2. 2~3年Python经验,有Django、Flask等主流Web框架项目实际开发经验;

3. 熟悉MySQL等关系数据库和其他如MongoDB、Redis、Celery等的开发和优化;

4. 了解常见Linux环境(CentOS、Ubuntu等)下项目、代码的部署和运维;

5. 有自己的开源项目或技术博客、对开源项目有贡献等优先;

6. 有ReactJS、Vue等前端经验者优先。

!!Python开发岗位描述3

工作职责:
1. 负责设计和开发分布式网络应用; 

2. 研究各种网页特点和规律,负责网页信息提取和整合; 

3. 研究网页安全策略和防屏蔽规则,提升网页请求效率和质量; 

4. 能够独立分析和解决问题,能够在较短时间内寻求最优解决方案;

任职资格:

1. 全日制本科及以上学历,计算机相关专业; 

2. 两年以上Python开发经验,熟悉Linux平台开发;

3. 熟悉Selenium、Appium、Scrapy、Flask等技术,有实际数据采集工作经验1年以上;

4. 熟悉网页分析和数据整合,从结构化和非结构化的数据中获取信息;

5. 熟悉mysql,redis,mongdb等数据库使用,了解海量数据存储; 

6. 熟悉多线程多进程编程、RabbitMQ分布式消息队列的使用;  

7. 有丰富的多终端采集经验、高并发系统的开发设计经验优先;

8. 积极主动、精益求精,善于利用技术解决业务难题,进行技术难点攻关;


!!Python数据工程师岗位描述1

工作职责:

1.负责推荐&搜索算法应用工程化开发,为算法模型提供对外接口服
务;

2.配合数据分析师,人工智能算法专家构建人工智能开发框架

3.通过集成和串联各模型和算法解决实际问题

任职资格:

1 计算机相关专业 ,有数据服务工作经验;

2 精通python和常用算法&数据结构, 可以根据需求对开源学习库进行开发;

3.熟悉常见人工智能相关应用,了解图片和自然语言处理基础支持,有一定的医学知识优先;

4、熟悉Pytorch、Caffe、TensorFlow等深度学习框架中的一种以上者优先;

5、有良好的代码编写和管理习惯,熟悉Git等版本管理系统;

6、善与人沟通、责任心强、具有团队合作精神、对编程有浓厚的热情、有自己的想法

!!python大数据工程师岗位描述

职位描述:
工作职责:

1.对部门项目所需的网络数据源进行运用爬虫技术数据抓取; 

2.针对互联网上收集的信息进行采集处理,负责信息提取、处理、优化、过滤、审核等工作; 

3.按要求做数据抓取前的配置等准备工作;检查网站抓取后是否有遗漏等工作;确保所负责的站点按周期采集及时、全面;

4.完成团队安排的其他工作。

任职资格:

1.全日制统招本科及以上学历,计算机/软件工程/数学/通讯/信息工程等等相关专业;

2.熟练掌握Python基础知识,熟悉scrapy爬虫框架,有Python实习项目或爬虫经验者优先;

3.有一定JS,CSS基础,熟悉XML,HTML语言和JavaScript等;

4.一定的SQL基础,熟悉主流Mysql,SQL Server等数据库;

5.具有良好的团队合作精神,以及较强的沟通、协调和组织能力;
! Python 工程师技能图谱

! 入门
*笨办法学Py
*官方教程
*Hitchhiker
*coursera
**codeskulptor.org
  
! 进阶/脚本

!! Pythonic

!! docopt
*pocoo
**Werkzeug
**click
**Flask
***RESTful
**Jinja2
***RESTful
**Sphinx
***txt2tags
***AsciiDoc
***Pelican
***moinmoin
**Pygments

!! CLI
*docopt
*x/84
*Twilio
*Urwid
*Ncurses

!! IPython
*IP[y]:NB

!! UTF-8

!! virtualenv
*pyenv
**PEX 	   

! 高级/工程

!! 专家
*Pythonic
*PyPy
*Cython
**Psyco
**pyrex
**Pyston
**PyParallel
*PEP
*FP
**lambda
**functools
**toolz
**fn
**pp
*pdb
**pyperform
**Profiling
**FlameGraph

!! Web
*Flask
**RESTful
*Jinja2
**RESTful
*Django
**RESTful
*Bottle
**RESTful
*Tornado
**RESTful
**gevent
**uWSGI
**gUnicorn
**Twisted

!! DevOps
*Werkzeug
*TDD
**nose
**pytest
**mock
*DB
**SQLAlchemy
*PEP8
**PyLint
**PyFlakes
*Hg
*Bazaar
*CI
**Ansible
**Bitten
**Fabric
**SaltStack
**Buildout
**pip

!! IDE
*IP[y]:NB
*Anaconda
*PyCharm
*Ulipad
*NetBeans
*IDLE
*SublimeText
*Komodo

!! PIL
*3D
**terry
**RenderMan
**Tractor
*gnuplot
*Game
**PyGame
**PySonic

!! GUI
*Tkinter
*wxPython
*PyQt
*PyGTK          

!! Mobile
*Kivy
*QPython 

!! DataScience
*Visualizaion
**matplotlib
**bokeh
**ggplot
**searborn
*Pandas 
**Scikit-lean
**numpy  
***Theano
**scipy
**NLTK
**Networkx
*PySpark

!! Zope

!! Jython

!! IronPython

!! Leo
    
''什么是Redis ''

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的''key-value''数据库。

''Redis 与其他 key - value 缓存产品有以下三个特点:''

* Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
* Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
* Redis支持数据的备份,即master-slave模式的数据备份。

__''Redis 优势''__

* 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
* 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
* 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
* 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

__''Redis与其他key-value存储有什么不同?''__

* Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
 
* Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。


!!Ruby工程师职位描述1

岗位职责:

1. 负责Ruby on Rails服务端Web应用(HTML5)的架构和开发;

2. 负责移动客户端服务器端RESTful API的架构和开发;

3. 负责产品服务器端性能优化(部署架构+程序+数据)等。



任职要求:

1.全日制本科以上学历,计算机相关专业

2. 3年以上Ruby, Ruby on Rails实际工作经验,精通Ruby元编程,精通Cucumber或RSpec测试;

3. 熟悉MySQL、Oracle数据库的开发、配置、维护、性能优化;了解mongodb、redis等Nosql数据库;

4. 熟悉HTM, CSS, Javascript, jQuery, JSON等Web相关技术;

5. 持续代码重构和代码评审,有良好的代码书写和编程习惯;

6. 独立工作能力强,能够高质量快速交付产品;

7. 较强的学习能力,良好的沟通能力及团队合作精神。


!!Ruby工程师职位描述2

工作职责:

1,参与公司核心业务后端功能的架构设计与优化、应用开发与测试;

2,解决服务、产品建设中遇到的问题,与团队一起攻克难题,不断提升系统性能。



任职条件:

1,计算机基础知识扎实,包括不限定于操作系统、计算机网络、数据结构和算法;

2,三年以上Ruby On Rails开发经验;

3,有写测试的习惯,熟悉单元测试和集成测试;

4,熟悉常用的中间件、分布式解决方案及原理:分布式缓存、SOA、消息中间件等;

5,熟悉关系型数据库,如 MySQL 等,熟悉 NoSQL,如 Redis 等;

6,熟练使用 Git。
! Ruby 技能图谱

说明: 本图谱只捡重点的列举,并非包含全部。文中所列举或没有列举的资源信息都可以在[awesome-ruby](https://github.com/markets/awesome-ruby)中找到。

!Ruby应用生态

!! Web开发

*Rails全栈式Web框架
*轻量级Web开发框架(Sinatra,Cuba等)
*异步无阻塞Ruby Server框架:Goliath

!! 自动化测试

*RSpec: BDD测试框架
*Cucumber: BDD验收测试框架
*Watir: Web应用测试工具


!! 安全

*Metasploit:也许是最好的渗透测试框架
*Gitrob: Github敏感信息收集工具

!! 云计算基础

*chef:   自动化运维工具
*puppet: 自动化运维工具
*fog: 强大的云服务库

!! 嵌入式

*mruby:  Ruby的轻量版本,为嵌入式开发而生
*[mruby-cli](https://github.com/hone/mruby-cli): 为linux等平台构建本地命令行应用

!! Web开发需要学习的主力框架

*Rails: 全栈Web开发框架
*Sinatra: 轻量级的Web开发框架
*Goliath: 异步非阻塞Ruby Server框架

!! 彻底掌握Ruby所需要的「道」与「术」

!! 「道」

*面向对象基础
*深入理解Ruby背后的设计哲学和设计原则
*深入理解Ruby对象模型
*深入理解block和闭包
*深入理解Ruby的作用域
*深入理解Ruby的方法查找机制
*深入理解Ruby的内存管理(变量和对象内存布局,GC算法和工作机制)
*进阶:有余力的可以研究Ruby底层的实现
*进阶:通过学习lisp(Elixir亦可),来反观Ruby中block(函数式编程风格),以及元编程的实现(Lisp是暴露AST的宏,Ruby是利用Block和作用域隐式操作AST的宏)


!! 「术」

*各种具体类型的处理方法和方式,比如字符串和相关编码、正则表达式、IO等处理
*并发与并行:
**彻底了解Ruby的GIL及其机制
**彻底了解Ruby线程的发展变化及其工作机制(从用户线程到本地线程)
**彻底了解Fiber及其应用(重点在Goliath中的应用,终结异步回调地狱)
**彻底了解进程相关(重点在各种Ruby多进程应用服务器的工作机制)
**尝试了解基于actor模型的Ruby并发库Celluloid。
*社区中各种Gem的实现原理及其用法

!! 学习资源


*[[「诱人的Ruby」视频教程|http://edu.51cto.com/lecturer/index/user_id-140924.html]]
*[[Ruby Weekly订阅|http://rubyweekly.com/]]
*其他请自行Google: Ruby books
 *[[架构师技能图谱]]

 *[[OpenResty技能图谱]] 

 *[[直播技术技能图谱]]

 *[[CDN技术技能图谱]]

 *[[DNS排查技能图谱]]
__''什么是SQLite''__

* SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。
 
* 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

__''为什么要用 SQLite?''__

* 不需要一个单独的服务器进程或操作的系统(无服务器的)。

* SQLite 不需要配置,这意味着不需要安装或管理。
 
* 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。

* SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
 
* SQLite 是自给自足的,这意味着不需要任何外部的依赖。
 
* SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
 
* SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
 
* SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
 
* SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

__''SQLite历史''__

* 2000 -- D. Richard Hipp 设计 SQLite 是为了不需要管理即可操作程序。
* 2000 -- 在八月,SQLite1.0 发布 GNU 数据库管理器(GNU Database Manager)。
* 2011 -- Hipp 宣布,向 SQLite DB 添加 UNQl 接口,开发 UNQLite(面向文档的数据库)。



!! 参考链接 

* 格式参考 http://tiddlywiki.com/#WikiText
* 官网 http://tiddlywiki.com
* 华语论坛 https://groups.google.com/forum/#!forum/tiddlywiki-zh
* 蜜汁台版文档 http://tw5-zh.tiddlyspot.com
* ~TiddlyWiki 使用手册 | 站长百科 http://www.zzbaike.com/wiki/TiddlyWiki
* tid.li Plugins - A ~TiddlyWiki Plugin Source http://tid.li/tw5/plugins.html
* Community 官方导航 http://tiddlywiki.com/#Community:Community%20Plugins
* 社区插件合集 http://erwanm.github.io/tw-community-search/#CommunityPlugins
* ~TiddlyWiki 使用教學中文版 http://web.nlhs.tyc.edu.tw/~lss/wiki/TiddlyWikiTutorialTW.html

!!! 相关阅读

*  应用tiddlywiki的一点经验 http://forum.ubuntu.org.cn/viewtopic.php?t=46941&highlight=wiki
* ~TiddlyWiki 使用心得 http://blog.csdn.net/yxj911/article/details/1577778
* 一个小巧好用的个人知识管理系统 - `TiddlyWiki` http://sinojelly.blog.51cto.com/479153/200468/

!! 配置计划

# 管理员用户系统
# 网页直接保存
#* 利用 PHP 配置参考 http://tiddlywiki.com/#Saving%20on%20a%20PHP%20Server

Home范德萨范德萨分ds
典型职位描述:

岗位职责:

* 1、负责组织和协调渗透测试的开展,并根据测试结果对业务系统进行优化和升级;
* 2、负责组织业务系统的攻防演练,制定和实施安全应急策略;
* 3、负责针对业务系统或公司系统的外部攻击进行溯源及与网安联动;
* 4、负责公司内部安全事件的调查和证据收集,协助安全小组进行处理。

任职要求:

* 1、本科及以上学历,信息安全、网络工程、通信工程、计算机、自动化和电子信息等相关专业; 
* 2、对软件定义安全有较深的理解,并能根据常见攻击制定和实施应对策略; 
* 3、熟悉TCP/IP协议、Windows和Linux操作系统的操作和安全配置、熟悉网络安全体系;; 
* 4、熟悉常见的外网渗透测试的漏洞原理及利用方法; 
* 5、敬业、正直、诚实,有很强的责任心和集体荣誉感,有良好的团队合作精神; 
* 6、熟练使用常见的外/内网渗透测试基础工具; 
* 7、大型互联网企业线上安全开发和维护经验优先;
* 8、具有国内知名安全公司安全开发或服务经验优先。
! 前端工程师技能图谱

!! 浏览器
*IE6/7/8/9/10/11 (Trident)
*Firefox (Gecko)
*Chrome/Chromium (Blink)
*Safari (WebKit)
*Opera (Blink)

!! 编程语言
*JavaScript/Node.js
*CoffeeScript
*TypeScript

!! 切页面
*HTML/HTML5
*CSS/CSS3
*Sass/LESS/Stylus
*PhotoShop/Paint.net/Fireworks/GIMP/Sketch

!! 开发工具

!!! 编辑器和IDE
*VIM/Sublime Text2
*Notepad++/EditPlus
*WebStorm
*Emacs EmacsWiki
*Brackets
*Atom
*Lime Text
*Light Table
*Codebox
*TextMate
*Neovim
*Komodo IDE / Edit
*Eclipse
*Visual Studio/Visual Studio Code
*NetBeans
*Cloud9 IDE
*HBuilder
*Nuclide    

!!! 调试工具
*Firebug/Firecookie
*YSlow
*IEDeveloperToolbar/IETester
*Fiddler/Charles
*Chrome Dev Tools
*Dragonfly
*DebugBar
*Venkman

!!! 版本管理
*Git/SVN/Mercurial
*Github/GitLab/Bitbucket/Gitorious/GNU Savannah/Launchpad/SourceForge/TeamForge

!! 代码质量

!!! Coding style
*Eslint/JSLint/JSHint/jscs
*CSSLint
*Markup Validation Service
*HTML Validators

!!! 单元测试
*QUnit/Jasmine
*Mocha/Should/Chai/Expect
*Unit JS

!!! 自动化测试
*WebDriver/Protractor/Karma Runner/Sahi
*phantomjs
*SourceLabs/BrowserStack

!! 前端库/框架
*jQuery/Underscore/Mootools/Prototype.js
*YUI3/Dojo/ExtJS/KISSY
*Backbone/KnockoutJS/Emberjs
*AngularJS
	**Batarang
*Bootstrap
*Semantic UI
*Juice UI
*Web Atoms
*Polymer
*Dhtmlx
*qooxdoo
*React
*Brick
*Vue.js

!! 前端标准/规范
*HTTP/1.1: RFCs 7230-7235
*HTTP/2
*ECMAScript 5/6/7
*W3C: DOM/BOM/XHTML/XML/JSON/JSONP/...
*CommonJS Modules/AMD
*HTML5/CSS3
*Semantic Web
*MicroData
*RDFa
*Web Accessibility
*WCAG
*Role Attribute
*WAI-ARIA

!! 性能
*JSPerf
*YSlow 35 rules
*PageSpeed
*HTTPWatch
*DynaTrace's Ajax
*高性能JavaScript

!! SEO

!! 编程知识储备
*数据结构
*OOP/AOP
*原型链/作用域链
*闭包
*编程范型
*设计模式
*Javascript Tips

!! 部署流程

!!! 压缩合并
*YUI Compressor
*Google Clousure Complier
*UglifyJS
*CleanCSS

!!!  文档输出
*JSDoc
*Dox/Doxmate/Grunt-Doxmate

!!!  项目构建工具
*make/Ant
*GYP
*Grunt
*Gulp
*Yeoman
*FIS
*Mod
*Webpack

!! 代码组织

!!! 类库模块化
*CommonJS/AMD/ES6 Module
*YUI3模块

!!! 业务逻辑模块化
*bower/component

!!! 文件加载
*LABjs
*SeaJS/Require.js/Webpack

!!! 模块化预处理器
*Browserify

!! 安全
*CSRF/XSS
*CSP
*Same-origin policy
*ADsafe/Caja/Sandbox

!! 移动Web
*HTML5/CSS3
*响应式网页设计
*Zeptojs/iScroll
*V5/Sencha Touch
*PhoneGap (Cordova)
*Ionic
*jQuery Mobile
*W3C Mobile Web Initiative
*W3C mobileOK Checker
*Open Mobile Alliance
*React Native/Weex

!! 前沿技术社区/会议
*D2/WebRebuild
*NodeParty/W3CTech/HTML5梦工厂
*JSConf/沪JS(JSConf.cn)
*QCon/Velocity/SDCC
*JSConf/NodeConf
*CSSConf
*YDN/YUIConf
*HybridApp
*WHATWG
*MDN
*codepen
*w3cplus
*CNode

!! 计算机知识储备
*编译原理
*计算机网络
*操作系统
*算法原理
*软件工程/软件测试原理
*Unicode

!! 软技能
*知识管理/总结分享
*沟通技巧/团队协作
*需求管理/PM
*交互设计/可用性/可访问性知识

!! 可视化
*SVG/Canvas/VML
*SVG: D3/Raphaël/Snap.svg/DataV
*Canvas: CreateJS/KineticJS
*WebGL/Three.JS

!![[Web前端技能图谱]] 



岗位职责:

1. 前端HTML/JS/CSS代码的编写;

2. 配合产品、UED完成项目迭代,不断优化和提升用户体验;
 
3. 深入分析和解决前端遇到的各种技术、性能、跨终端兼容问题;

4. 完成前端核心业务代码优化及Js组件的封装;



任职要求:

全日制统招本科及以上

熟练掌握HTML5、CSS3、JavaScript等

熟悉W3C标准与ES规范,熟悉Web语义化

熟练掌握盒模型、常用布局以及浏览器和移动设备兼容性

熟练使用至少一种JS框架,熟练Reactjs、Angular、Vue等,掌握其原理,能独立开发常用组件

具有性能优化经验,熟练使用各种调试、抓包工具,能独立分析、解决和归纳问题

熟悉前端自动化和工程化,熟悉NodeJS开发,熟练使用Git
 *[[Web前端技能图谱]] 

 *[[移动性能优化技能图谱]] 

 *[[HTML5开发技能图谱]] 

 *[[Angular2技能图谱]]
!!文件编辑者留名册:

出于对版权的尊重,以及对编辑者所作出劳动的尊重,请每一版的编辑者在下方留名,格式不限。



---

4

---

第三版编辑者:

第三版引用材料: 

---

第二版编辑者:

第二版引用材料:

---

第一版编辑者:Yu Gongde,希望探索宇宙的人

[img[yugongde.jpeg]]

第一版引用材料:

极客邦科技在Github上的开源项目:程序员技能图谱
https://github.com/TeamStuQ/skill-map|https://github.com/TeamStuQ/skill-map

拼客学院陈鑫杰的文章:网络安全求职指南(入坑指南)
https://mp.weixin.qq.com/s/GZW8QssueLzySJSAHj2lGQ







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cHJvb2ZDTVlLADhCSU0EOwAAAAACLQAAABAAAAABAAAAAAAScHJpbnRPdXRwdXRPcHRpb25zAAAAFwAAAABDcHRuYm9vbAAAAAAAQ2xicmJvb2wAAAAAAFJnc01ib29sAAAAAABDcm5DYm9vbAAAAAAAQ250Q2Jvb2wAAAAAAExibHNib29sAAAAAABOZ3R2Ym9vbAAAAAAARW1sRGJvb2wAAAAAAEludHJib29sAAAAAABCY2tnT2JqYwAAAAEAAAAAAABSR0JDAAAAAwAAAABSZCAgZG91YkBv4AAAAAAAAAAAAEdybiBkb3ViQG/gAAAAAAAAAAAAQmwgIGRvdWJAb+AAAAAAAAAAAABCcmRUVW50RiNSbHQAAAAAAAAAAAAAAABCbGQgVW50RiNSbHQAAAAAAAAAAAAAAABSc2x0VW50RiNQeGxAWAAAAAAAAAAAAAp2ZWN0b3JEYXRhYm9vbAEAAAAAUGdQc2VudW0AAAAAUGdQcwAAAABQZ1BDAAAAAExlZnRVbnRGI1JsdAAAAAAAAAAAAAAAAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAAAAAAEGNyb3BXaGVuUHJpbnRpbmdib29sAAAAAA5jcm9wUmVjdEJvdHRvbWxvbmcAAAAAAAAADGNyb3BSZWN0TGVmdGxvbmcAAAAAAAAADWNyb3BSZWN0UmlnaHRsb25nAAAAAAAAAAtjcm9wUmVjdFRvcGxvbmcAAAAAADhCSU0D7QAAAAAAEABgAAAAAQACAGAAAAABAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP//////////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Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06RG9jdW1lbnRJRD0iRDhBNjc0RDZBODY4NzY0MUY5M0QwMTM1RUEyOEQxRUIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjU4MmViNDgtMmY2MC00MmY2LTlmYzItMzc1M2M0YTA4OTcyIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9IkQ4QTY3NEQ2QTg2ODc2NDFGOTNEMDEzNUVBMjhEMUVCIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wOkNyZWF0ZURhdGU9IjIwMTktMDUtMTlUMTY6MTI6MDYrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTA1LTE5VDE2OjEzOjA0KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTA1LTE5VDE2OjEzOjA0KzA4OjAwIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjU4MmViNDgtMmY2MC00MmY2LTlmYzItMzc1M2M0YTA4OTcyIiBzdEV2dDp3aGVuPSIyMDE5LTA1LTE5VDE2OjEzOjA0KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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